0

我在 Django 中有一个这样定义的 URL:

# http://localhost:8000/quiz/grammar/beginner/1/question

url(r'^(?P<page_name>[-\w]+)/(?P<level>\w+)/(?P<quiz_id>\d+)/question/$', views.question, name='question')

如果我传递静态值,我不会收到任何错误:

<a href="{% url 'quiz:question' "fds" "fds" 1 %}">{{ i.name }}</a>

因为我已经在这个页面上:http://localhost:8000/quiz/grammar/beginner/我想像这样传递 URL:

{% for i in quizes %}

    <a href="{% url 'quiz:question' i.id %}">{{ i.name }}</a>

{% endfor %}

我已经namespace定义了。但我得到这个错误:

Reverse for 'question' with arguments '(1L,)' and keyword arguments '{}' not found.

在我看来,我正在这样做:

def question(request, quiz_id):

怎么了?

编辑:试过这个,仍然没有运气:

def question(request, page_name, level, quiz_id):
4

1 回答 1

0

url 标签返回一个绝对 url。它不知道您所在的页面,因此在使用标签时不能省略leveland参数。quiz

如果你有page_name并且level在你的模板上下文中,你可以在 url 标签中使用这些变量。

<a href="{% url 'quiz:question' page_name level i.id %}">{{ i.name }}</a>

如果您在 url 中捕获page_namelevel参数,那么您可以正确更改视图函数以接受它们。

def question(request, page_name, level, quiz_id):
于 2013-09-18T10:16:34.797 回答