我一直在使用教程进行 django 项目,并且收到了此消息。当我单击单选框进行投票时,管理中的计数上升,但网站显示错误消息而不是加载模板。似乎 model.py 中有问题,所以我添加了它。
TypeError at /polls/3/vote/
reverse() takes no keyword arguments
Request Method: POST
Request URL: http://127.0.0.1:8000/polls/3/vote/
Django Version: 1.10.5
Exception Type: TypeError
Exception Value: reverse() takes no keyword arguments
Exception Location: C:\Users\jeon hyun joo\workspace\ch3\polls\views.py in vote, line 33
Python Executable: C:\Python27\python.exe
Python Version: 2.7.13
Python Path:
['C:\\Users\\jeon hyun joo\\workspace\\ch3',
'C:\\Users\\jeon hyun joo\\workspace\\ch3',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages',
'C:\\Python27\\lib\\site-packages\\django-1.10.5-py2.7.egg',
'C:\\WINDOWS\\SYSTEM32\\python27.zip',
'C:\\Python27\\lib\\plat-win']
Run Code Online (Sandbox Code Playgroud)
视图.py
from audioop import reverse
from gc import get_objects
from django.http.response import HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django.template.context_processors import request
from polls.models import Question, Choice
# Create your views here.
def index(request):
latest_question_list = Question.objects.all().order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', { 'question' : question })
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
return render(request, 'polls/detail.html', {
'question' : question,
'error_message' : "You didn't select a choice",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
def results(reqeust, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/results.html', { 'question' : question })
Run Code Online (Sandbox Code Playgroud)
我添加了从 Eclipse 控制台收到的消息
TypeError: reverse() takes no keyword arguments
[11/Feb/2017 16:50:30] "POST /polls/3/vote/ HTTP/1.1" 500 67663
Run Code Online (Sandbox Code Playgroud)
nev*_*ner 17
您正在使用这行代码覆盖 django反向方法:
from audioop import reverse
Run Code Online (Sandbox Code Playgroud)
要使用 django 的反向功能,您应该导入它:
from django.urls import reverse
Run Code Online (Sandbox Code Playgroud)
另外,如果您仍然需要 audioop 的反向,您可以使用同义词和as语法:
from audioop import reverse as audio_reverse
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |