我试图抓住两个参数,但我不知道如何通过html发送它们。
这是urls.py:
app_name = 'series'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<serie_id>[0-9]+)/$', views.season, name='season'),
url(r'^(?P<serie_id>[0-9]+)/(?P<season_id>[0-9]+)/$', views.chapter, name='chapter'),
url(r'^login/$', views.login, name='login'),
]
这是html:
<ul>
{% for season in season_list %}
<li><a href="{% url 'series:chapter' season.id %}">{{ season.season_name }}</a></li>
{% endfor %}
</ul>
这是观点:
def chapter (request, serie_id, season_id):
season = Season.objects.get(pk=season_id)
chapter_list = season.chapter_set.all()
return render(request, 'series/serie.html', {'chapter_list': chapter_list})
我有这个错误:
Reverse for 'chapter' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'series/(?P<serie_id>[0-9]+)/(?P<season_id>[0-9]+)/$']
我如何解决?
答案 0 :(得分:1)
根据您的urls.py
,您有两个网址选项:
仅使用系列ID(series:season
)调用url(r'^(?P<serie_id>[0-9]+)/$', views.season, name='season')
:
<ul>
{% for season in season_list %}
<li><a href="{% url 'series:season' series.id %}">{{ season.season_name }}</a></li>
{% endfor %}
</ul>
或使用系列ID和季节ID调用series:chapter
(url(r'^(?P<serie_id>[0-9]+)/(?P<season_id>[0-9]+)/$', views.chapter, name='chapter')
) - 我不知道series
来自何处,因此您需要修改此代码才能生效
<ul>
{% for season in season_list %}
<li><a href="{% url 'series:chapter' series.id season.id %}">{{ season.season_name }}</a></li>
{% endfor %}
</ul>