python - 在参数中使用带有 unicode 字符的 {% url %} 反向 (Django)

标签 python django unicode django-templates django-views

我有一个 Django 站点,可以在其中单击帖子的标签(我使用 tagulous)来查看使用该标签的所有帖子的列表。它工作正常,除非字符串是 unicode。具体来说,是我的模板的这一行给我一个错误:

<a href="{% url 'fortykwords:tag' tag.name %}">{{ tag.name }}</a>

它给了我错误

Reverse for 'tag' with arguments '('你好',)' not found. 1 pattern(s) tried: ['tag\\/(?P<input_tag>[-a-zA-Z0-9_]+)$']

这是 urls.py:

path('tag/<slug:input_tag>', views.tag_view, name='tag'),

这是来自 views.py 的 View :

def tag_view(request, input_tag):
    latest_post_list = Post.objects.filter(tags=input_tag, 
    status__exact="published")
    context = {'latest_post_list': latest_post_list, 'page_tag': input_tag}
    return render(request, 'fortykwords/tag.html', context)

我应该更改什么以便可以使用 unicode 参数反向链接?

最佳答案

尝试使用模式 \w+ 而不是 [-a-zA-Z0-9_]+

为此,您需要将 path 更改为 re_path 以对 url 使用您自己的自定义正则表达式。

示例:

from django.urls import path, re_path

urlpatterns = [
    # your regular paths
    path('...'),

    # update to `re_path` for those which can accept unicode letters
    url(r'tag/(?P<input_tag>\w+)$', views.tag_view, name='tag'),
]

关于python - 在参数中使用带有 unicode 字符的 {% url %} 反向 (Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677078/

相关文章:

ruby - 使用 Ruby 拆分 Unicode 字符串

django - React请求Django API时,出现net::ERR_SSL_PROTOCOL_ERROR

django - Heroku Scheduler - 为什么要对长时间运行的作业进行排队

python - 使用两个或多个不同的键查找 Django 模型

python - Flask-WTForms 测试(使用 py.test)

unicode - Twitter bootstrap 使用的关闭符号的 unicode 字符是什么?

python json转储unicode错误

python - crontab 不适用于 Centos Docker 容器

python - 删除 matplotlib 文本绘图边框

python - 是否有一些轻量级的 python 库可以用 poloyphony 播放音乐片段?