使用带有特殊字符的Django的url模板标记

时间:2010-11-22 01:18:34

标签: django django-templates

我正在使用django的url标签从一个视图移动到另一个视图:

<a href = {% url wiki_view item %}>Read more here</a>

对于大多数“项目”,这非常有效。但是我有一个带有/字符的“项目”:Sci-Fi / Fantasy。在这种情况下,我收到错误

  

渲染时捕获NoReverseMatch:反向'wiki_view',参数'(u'Sci-fi / Fantasy',)'和关键字参数'{}'未找到。

我的urls.py定义如下:

url(r'^wiki/page/(?P<page_title>[^/]*)/$', views.wiki_view, name = 'wiki_view'),

有没有一种方法可以使用这样的“/”字符?

3 个答案:

答案 0 :(得分:3)

使用urlencode过滤器作为Ignacio建议,但默认情况下,您仍然会收到一个问题,即过滤器会假定/保持不变。您可以通过以下方式使用过滤器来解决此问题(如果您当前使用的是dev版本):

item|urlencode:""

Django docs中解释了这一点。

答案 1 :(得分:1)

首先通过urlencode传递参数。

答案 2 :(得分:0)

您应该在URL中使用Djanog的slugify。它用URL友好的字符和人类可读的替代字符替换了类似的字符。

from django.template.defaultfilters import slugify