我尝试将我的网址设为 description /(party_number) - (pk),其中 party_number 和 pk 不同每个对象。但不管怎样,我得到了错误:
使用关键字参数'{'pk':10,'nums':'A15151'}'找不到'onePart'。尝试了1种模式:['description /(?:(?P [\ d] +) - (?P [\ d] +)/)?$']
在我的 views.py:
中def PartyNumView(request, page_number = 1):
all_parties = Part.objects.all()
current_page = Paginator(all_parties, 2)
try:
context = current_page.page(page_number)
except PageNotAnInteger:
context = current_page.page(1)
except EmptyPage:
context = current_page.page(current_page.num_pages)
return render_to_response('part_list.html', {'PartyNum': context})
def forOne(request, pk):
onePart = get_object_or_404(Part, pk=pk)
return render_to_response('singlePart.html', {'onePart': onePart})
我的 urls.py:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^parties/(?P<page_number>[\d]+)/$', PartyNumView),
url(r'^parties', PartyNumView),
url(r'description/(?:(?P<nums>[\d]+)-(?P<pk>[\d]+)/)?$', forOne, 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 nums=object.Party_number %}"> {{ object.Party_number }}</a></td>
<td>{{ object.Film }}</td>
<td>{{ object.Thick }}</td>
<td>{{ object.Critical_temperature }}</td>
<td>{{ object.R_s }}</td>
{% endfor %}
答案 0 :(得分:2)
您应该更改网址参数的位置,将Party_number
作为模板中的第一个参数。
<td><a href="{% url 'onePart' nums=object.Party_number pk=object.pk %}">...</td>
正如我在追溯参数中明确看到的那样{'pk': 10, 'nums':'A15151'}
Party_number
可能不仅包含数字,因此你的正则表达式是错误的。
而不是这个
url(r'description/(?:(?P<nums>[\d]+)-(?P<pk>[\d]+)/)?$', forOne, name='onePart'),
尝试:
url(r'description/(?P<nums>\w.+)/(?P<pk>\d+)/$', forOne, name='onePart'),
该网址调用的视图def forOne(request, pk):
没有所需的参数nums
。最好使用默认值
def forOne(request, pk, nums=None):
''' '''