【发布时间】:2015-05-01 03:55:21
【问题描述】:
当我想反向使用带有特殊字符的参数时,我有这个错误:
使用参数 '()' 和关键字参数 '{'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 "
【问题讨论】:
-
这并不能解决您的问题 - 但 URI 只能包含 ASCII 字符(请参阅RFC-2396)
-
你是对的,但就 django 而言,你仍然需要对其进行 URL 编码(对 IDN 的支持将在 1.8 中推出)。
标签: python django django-templates django-urls