使用Django';具有特殊字符的url模板标记

使用Django';具有特殊字符的url模板标记,django,django-templates,Django,Django Templates,我正在使用django的url标记从一个视图移动到另一个视图: <a href = {% url wiki_view item %}>Read more here</a> 对于大多数“项目”,这是完美的。但我有一个带有a/字符的“项目”:科幻/幻想。在这个例子中,我得到一个错误 呈现时捕获到NoReverseMatch:未找到带有参数(u'Sci-fi/Fantasy',)和关键字参数“{}”的“wiki_视图”的反转 My URL.py的定义如下: url(r'^

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

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

对于大多数“项目”,这是完美的。但我有一个带有a/字符的“项目”:科幻/幻想。在这个例子中,我得到一个错误

呈现时捕获到NoReverseMatch:未找到带有参数(u'Sci-fi/Fantasy',)和关键字参数“{}”的“wiki_视图”的反转

My URL.py的定义如下:

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

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

首先传递参数。

您应该在URL中使用的任何内容上使用Djanog的
slagify
。它将这样的字符替换为URL友好的字符和人类可读的替代字符

from django.template.defaultfilters import slugify

按照Ignacio的建议使用
urlencode
过滤器,但是您仍然会遇到一个问题,因为默认情况下,过滤器假定一个
/
被忽略。您可以通过以下方式使用过滤器来解决此问题(如果您当前使用的是开发版本):

item|urlencode:""

这在中有解释。

谢谢。我会记住这一点。不过在本例中,slugify完全删除了正斜杠。在构建下一页时,标题为Sci FIFANTASYES,可能Slagify最好是经过深思熟虑后使用@因此,伊格纳西奥的回答是一个更好的即时解决方案。但是如何将它与url模板标记结合起来呢?我试过:,但我得到了同样的结果error@Ed.看看这个,你需要做urlencode twicehmm。好啊我在1.3.0 alpha上。我对跳到开发版本有点犹豫,因为这可能是生产中需要的。我会给你答案,但如果你有其他建议,我将不胜感激。你可以,只要复制一下