无法在模板中调用视图

时间:2017-01-04 23:58:31

标签: python django django-views

我尝试使用模板中的可选参数调用视图,但会抛出异常。

这是我的观点:

def page(request, page_id=1):
    page = Page.objects.filter(pk=page_id).first()
    context = {
        'page': page,
        'answers': Answer.objects.filter(source_page_id=page.id)
    }
    return render(request, 'page.html', context)

我尝试从page.html模板中调用它:

<ul>
    {% for answer in answers %}
        <li><a href="{% url 'page' answer.target_page_id %}">{{ answer.choice_text }}</a></li>
    {% endfor %}
</ul>

但由于某种原因,抛出异常,如下所示:

Reverse for 'page' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['$$']

这里发生了什么?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您需要在urls.py中为视图定义输入参数:

这是错误的:

url(r"^page/$", page, name="page"),

这是对的:

url(r"^page/(?P<page_id>.*)/$", page, name="page"),

答案 1 :(得分:-1)

尝试改变它:

def page(request, pk):
    page = Page.objects.get(pk=1).first()
    context = {
        'page': page,
        'answers': Answer.objects.filter(source_page_id=page__id)
    }
    return render(request, 'page.html', context)