当我想要反向使用特殊字符的参数时,我有这个错误:
使用参数'()'和关键字参数'{'namep':u'\ xe9 \ xe9 \ xe9 sds(\ xe9zacd'}''找不到'l_s.views.my_pro'的反转.1个模式试过:['(?P \ w +)$']
我的观点:
def createPro(request):
...
if form.is_valid() :
name = form.cleaned_data["name"]
return redirect(reverse(my_pro, kwargs={'namep': name}))
def my_pro(request,namep):
pro = Pro.objects.get(name=namep)
...
我的模板:
...
<form method="POST" action="{% url 'createPro' %}" class="form-signin">
{% csrf_token %}
<div class="row">
<div class="col-md-offset-3 col-md-3">
{{ form.name|bootstrap }}
</div>
...
我的网址:
url(r'^create-pro$', 'createPro', name='createPro'),
url(r'^(?P<namep>\w+)$','my_pro', name="mypro"),
当方法“createPro”中的变量“name”包含特殊字符时,我遇到此错误。对于此示例,name =“ééésds(ézacd”
答案 0 :(得分:0)
您似乎想要在您的网址中包含unicode字符。试试这个:how to have unicode characters in django url?
答案 1 :(得分:0)
您的测试用例为name = "é é é sds ( ézacd "
,而视图的正则表达式为url(r'^(?P<namep>\w+)$'
。 ' '
和(
与\w
不匹配,因此正则表达式不匹配。尝试使用"ééésdsézacd"
,或更新正则表达式以允许名称中允许使用的字符。
代码审核看起来Django网址解析器使用re.UNICODE
标记,因此我希望'é'
等与\w
匹配。