2017-07-03 115 views
0

在我的django项目中,我有两个模型类 - 类别& Action。类别是操作的外键(所有操作都属于类别)。如何将上下文对象作为Django url模板标签参数传递

在我的django模板中,我希望能够将一个上下文对象传递到接受包含类别名称的字符串作为参数的{%url%}标记。因此,在一个完美的世界我的Django的模板需要有这样一行:

<form action="{% url 'actions' {{ category }} %}">

,并提交时,Django的将遵循形式像URLPATTERN:

url(r'^(?P<category_name>\w+)', views.actions, name='actions'),

不过遗憾的是它不看起来我能够将模板过滤器嵌入到模板标记中。我可以通过url标记引用Django对象的ForeignKey,这是另一种方式吗?或者用不同的方式来构建我的代码?

+0

什么是你的问题,你需要一个字符串传递到它是类对象的名称的网址?是吗? – zaidfazil

+0

是的,确切地说。问题是,因为它是一个跨越多个类别使用的Django模板,字符串不能被硬编码(例如,我不能只放入'Category_One'来代替{{category}},因为如果我试图访问'Category_Two') – Argonautic

+0

这个问题经常出现,我不明白为什么人们认为你需要在模板标签中使用可变语法。 [url'标签的文档](https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#url)甚至有几个直接使用变量的例子。 –

回答

2

上下文变量在url templatetag可以直接使用:

<form action="{% url 'actions' category_name=category %}"> 
+0

谢谢!这个响应让我意识到我的代码中有一个不同的错误(我将QuerySet而不是实际的对象传递给变量分类)。修复与使用此语法结合解决了问题! – Argonautic

相关问题