丢失1需要位置参数 - 问题

时间:2018-06-04 21:03:19

标签: python django

可能是这个愚蠢的问题,但我是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)

请帮我找错。

3 个答案:

答案 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参数时它会引发异常