Django多个html参数

时间:2017-02-20 17:50:52

标签: python django url-parameters

我试图抓住两个参数,但我不知道如何通过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]+)/$']

我如何解决?

1 个答案:

答案 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:chapterurl(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>