Django:如何使用模板变量和url标记

时间:2013-05-17 09:18:13

标签: django django-templates django-1.5

我正在使用Django 1.5.1

我需要将视图名称作为变量传递给我的模板。

以下是我的观点的相关部分

return render(request, 'testcases/execute.html', {
        'table': table ,
        'submit_view': 'testcase_execute' ,
        "project": project})

这是我模板的相关部分

<form method="POST" action="{% url submit_view project.slug %}">
                {% render_table table %}
                <input type="submit"/>
</form>

如您所见,我正在尝试将视图名称('testcase_execute')作为变量(submit_view)传递给模板。

但这样我就收到了错误

'url'需要非空的第一个参数。 Django 1.5中的语法已更改,请参阅文档。

我没有看到什么错误,因为这个SO线程(How to pass a variable to {% url %} tag in django?),如果我需要使用带有url标记的变量,我不应该使用引号。还存在其他SO线程,它们说明了同样的事情。

我看到另一个SO线程(Passing variable urlname to url tag in django template)声明了这种事情(使用带有url标记的变量)不支持,我应该使用django-reversetags来实现这一点。

请注意一下 - 是否有官方(Django核心)方式这样做或者我应该使用django-reversetags

2 个答案:

答案 0 :(得分:2)

  

在Django 1.3之前,解释了{% url myview %}之类的语法   错误[...]

     

[...]您需要将{% url myview %}等标记更改为{% url "myview" %}。   如果您使用{% load url from future %},则只需删除即可   Django 1.5下的那一行

https://docs.djangoproject.com/en/1.5/releases/1.5/#overview

答案 1 :(得分:1)

{% url 'submit_view' project.slug %}我想这可以帮到你