我正在使用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
答案 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 %}
我想这可以帮到你