Python 视图没有';t返回HttpResponse对象错误
我正在将excel数据导入MySQL数据库。在这样做的时候,我看到了一个错误 My views.py文件:Python 视图没有';t返回HttpResponse对象错误,python,mysql,django,django-views,Python,Mysql,Django,Django Views,我正在将excel数据导入MySQL数据库。在这样做的时候,我看到了一个错误 My views.py文件: db = MySQLdb.connect(host="localhost", user="root", passwd="", db="upload") test = 'c' def list(request): if request.method =
db = MySQLdb.connect(host="localhost",
user="root",
passwd="",
db="upload")
test = 'c'
def list(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
newdoc = newdoc.docfile.name
newdoc = str(newdoc)
wb = xlrd.open_workbook(newdoc)
sh = wb.sheet_by_index(0)
c = 1
while c < len(sh.col(0)):
first = sh.col_values(0)[c]
second = sh.col_values(1)[c]
x = db.cursor()
db.set_character_set('utf8')
x.execute('SET NAMES utf8;')
x.execute('SET CHARACTER SET utf8;')
x.execute('SET character_set_connection=utf8;')
x.execute("INSERT INTO testcont_content(title, description) VALUES('%s','%s');"%(first,second))
db.commit()
c=c+1
return HttpResponseRedirect(reverse('upload.views.list'))
else:
form = DocumentForm() # A empty, unbound form
documents = Document.objects.all()
return render_to_response('upload/list.html',{'documents': documents, 'form': form, 'test': test,},context_instance=RequestContext(request))
urlpatterns = patterns('',
url(r'^list/$', views.list, name='list'),
)
我的forms.py文件是:
class DocumentForm(forms.Form):
docfile = forms.FileField(
label='Select a file',
help_text='max. 42 megabytes'
)
URL.py文件:
db = MySQLdb.connect(host="localhost",
user="root",
passwd="",
db="upload")
test = 'c'
def list(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
newdoc = newdoc.docfile.name
newdoc = str(newdoc)
wb = xlrd.open_workbook(newdoc)
sh = wb.sheet_by_index(0)
c = 1
while c < len(sh.col(0)):
first = sh.col_values(0)[c]
second = sh.col_values(1)[c]
x = db.cursor()
db.set_character_set('utf8')
x.execute('SET NAMES utf8;')
x.execute('SET CHARACTER SET utf8;')
x.execute('SET character_set_connection=utf8;')
x.execute("INSERT INTO testcont_content(title, description) VALUES('%s','%s');"%(first,second))
db.commit()
c=c+1
return HttpResponseRedirect(reverse('upload.views.list'))
else:
form = DocumentForm() # A empty, unbound form
documents = Document.objects.all()
return render_to_response('upload/list.html',{'documents': documents, 'form': form, 'test': test,},context_instance=RequestContext(request))
urlpatterns = patterns('',
url(r'^list/$', views.list, name='list'),
)
我不知道我在这里做错了什么。第一行:
if request.method == "POST":
没有其他部分。执行重定向时,该方法不是post。因此,找不到else部分,因此没有为第一行返回HttpResponse对象:
if request.method == "POST":
没有其他部分。执行重定向时,该方法不是post。因此,找不到else部分,因此没有返回HttpResponse对象您需要在每次请求时返回一个
HttpResponse
对象(或一个子类,如HttpResponseRedirect
)。在您的代码中,您正在检查请求是否通过POST发送,但是您忘记了返回响应。您的观点应该是:
def list(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
# ... Your process
return HttpResponseRedirect(reverse('upload.views.list'))
else:
form = DocumentForm() # A empty, unbound form
# We reach there when the HttpResponseRedirect has not been called
documents = Document.objects.all()
return render_to_response('upload/list.html',
{'documents': documents, 'form': form, 'test': test,},
context_instance=RequestContext(request))
您需要在每次请求时返回一个
HttpResponse
对象(或一个子类,如HttpResponseRedirect
)。在您的代码中,您正在检查请求是否通过POST发送,但是您忘记了返回响应。您的观点应该是:
def list(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
# ... Your process
return HttpResponseRedirect(reverse('upload.views.list'))
else:
form = DocumentForm() # A empty, unbound form
# We reach there when the HttpResponseRedirect has not been called
documents = Document.objects.all()
return render_to_response('upload/list.html',
{'documents': documents, 'form': form, 'test': test,},
context_instance=RequestContext(request))
您的反向('upload.views.list')将失败,因为您的url应显示url(r'^list/$,views.list,name='upload.views.list')您的反向('upload.views.list')将失败,因为您的url应显示url(r'^list/$,views.list,name='upload.views.list'))