我在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/
我想过像这样传递网址:
{% 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):
答案 0 :(得分:0)
url标记返回绝对网址。它不知道您所在的页面,因此在使用标记时您不能忽略level
和quiz
参数。
如果模板上下文中有page_name
和level
,则可以在url标记中使用这些变量。
<a href="{% url 'quiz:question' page_name level i.id %}">{{ i.name }}</a>
如果您在网址中捕获page_name
和level
个参数,那么您更改视图功能以接受它们是正确的。
def question(request, page_name, level, quiz_id):