可能是这个愚蠢的问题,但我是django的乞丐。我有错误的问题:
" PartyNumView()缺少1个必要的位置参数:' pk'"
views.py :
from description.models import Part
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.shortcuts import render_to_response, get_object_or_404
def PartyNumView(request, pk, page_number = 1):
all_parties = Part.objects.all()
current_page = Paginator(all_parties, 10)
try:
context = current_page.page(page_number)
except PageNotAnInteger:
context = current_page.page(1)
except EmptyPage:
context = current_page.page(current_page.num_pages)
onePart = get_object_or_404(Part, pk = pk)
return render_to_response('part_list.html', {'PartyNum': context, 'onePart': onePart})
urls.py:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^parties/(\d+)/$', PartyNumView),
url(r'^parties', PartyNumView),
url(r'parties/(?P<pk>[\d]+)$', PartyNumView, name='onePart'),
url(r'^main/', TemplateView.as_view(template_name='main.html')), #static html
url(r'^measures/', TemplateView.as_view(template_name='IcDesc.html')), #static html
]
还有一点 part_list.html:
{% for object in PartyNum %}
<tr>
<td>{{ forloop.counter }}</td>
<td><a href="{% url 'onePart' pk = object.pk %}"> {{ object.Party_number }}</a></td>
<td>{{ object.Film }}</td>
<td>{{ object.Thick }}</td>
<td>{{ object.Critical_temperature }}</td>
<td>{{ object.R_s }}</td>
{% endfor %}
在Models.py中我有一个类Part(models.Model)
请帮我找错。
答案 0 :(得分:2)
PartyNumView
;
url(r'^parties', PartyNumView),
url(r'parties/(?P<pk>[\d]+)$', PartyNumView, name='onePart'),
只需删除第一个,一切正常,然后在第二个
之前添加^
url(r'^parties/(?P<pk>[\d]+)$', PartyNumView, name='onePart'),
或者如果视图提供2个不同的网址,请不要删除您的第一个url
,在第二个网址中添加^
,然后为pk
添加默认参数视图,如None
PartyNumView(request, pk=None, page_number = 1):
all_parties = Part.objects.all()
答案 1 :(得分:1)
网址url(r'^parties', PartyNumView),
不会解析参数pk
,但它仍会调用函数PartyNumView
。
您必须为该特定网址使用不同的视图功能,或使用默认值:
def PartyNumView(request, pk=None, page_number = 1):
我建议您阅读python style guide,以便将代码调整为标准实践。例如,函数名称通常都是小写的,并用下划线分隔;例如,您的PartyNumView
可以重命名为party_num_view
。
使用这种风格可以帮助其他python程序员理解你的代码并提供更好的答案。
答案 2 :(得分:1)
问题是你的url_patterns url(r'^parties', PartyNumView),
当这个url你的视图没有恢复pk参数时它会引发异常