首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >缺少1个必需的位置参数-问题

缺少1个必需的位置参数-问题
EN

Stack Overflow用户
提问于 2018-06-05 05:03:19
回答 3查看 666关注 0票数 0

也许这是个愚蠢的问题,但我在django是个乞讨者。我有一个错误的问题:

"PartyNumView()缺少1个必需的位置参数:'pk'“

views.py

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
  {% 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中,我有一个类部件(models.Model)

请帮我找出一个错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-05 05:17:29

url url(r'^parties', PartyNumView),不解析参数pk,但它仍然调用函数PartyNumView

对于特定的url,您必须使用不同的视图函数,或者使用默认值:

代码语言:javascript
复制
def PartyNumView(request, pk=None, page_number = 1):

我建议您阅读python style guide,也许可以根据标准实践调整您的代码。例如,函数名通常都是小写的,并用下划线分隔;例如,您的PartyNumView可以重命名为party_num_view

使用这种风格可以帮助其他python程序员理解您的代码并提供更好的答案。

票数 1
EN

Stack Overflow用户

发布于 2018-06-05 05:17:43

你有两个PartyNumView的urls模式;

代码语言:javascript
复制
url(r'^parties', PartyNumView),
url(r'parties/(?P<pk>[\d]+)$', PartyNumView, name='onePart'),

只需删除第一个,一切就好了,并在第二个之前添加^

代码语言:javascript
复制
url(r'^parties/(?P<pk>[\d]+)$', PartyNumView, name='onePart'),

或者,如果视图提供两个不同的url,不要删除第一个^,在第二个url中添加url,然后为视图中的pk添加一个默认参数,如None

代码语言:javascript
复制
PartyNumView(request, pk=None, page_number = 1):
    all_parties = Part.objects.all()
票数 2
EN

Stack Overflow用户

发布于 2018-06-05 05:27:00

问题出在你的url_patterns url(r'^parties', PartyNumView),,当这个url你的视图没有收到pk参数时,它会引发异常

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档