gpt4 book ai didi

python - Django 不匹配 url 中的 unicode

转载 作者:太空狗 更新时间:2023-10-30 00:09:07 25 4
gpt4 key购买 nike

我在使用 django 2.0 时遇到问题,其中包含 unicode slug 的 url 不匹配,我搜索了一个解决方案但没有找到适合我的情况的解决方案,这是我的代码的简化版本:

// models.py

class Level(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, allow_unicode=True)

在我的 urls 文件中,我有这些模式:

// urls.py

urlpatterns = [
path('', views.index, name='index'),
path('level/<slug:level_slug>', views.level, name='level')]

现在如果我去,对 http://127.0.0.1:8000/game/level/deuxième 说,我得到这个错误:

Request Method: GET
Request URL: http://127.0.0.1:8000/game/level/deuxi%C3%A8me

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:

game/ [name='index']
game/level/<slug:level_slug> [name='level']
admin/
accounts/
The current path, game/level/deuxième, didn't match any of these.

但是如果我将项目的 slug 更改为没有 unicode 字符的 deuxieme,它工作正常,有人知道这个问题的解决方案吗?谢谢!

最佳答案

urls.py 中更改 path从使用 slug 类型到 str

来自这里:

    path('posts/<slug:slug>-<int:pk>/', views.PostDetailView.as_view()),

为此:

    path('posts/<str:slug>-<int:pk>/', views.PostDetailView.as_view()),

说明

正如评论中所建议的,slug 路径转换器

Matches any slug string consisting of ASCII letters or numbers, plus the hyphen and underscore characters. For example, building-your-1st-django-site.

但是我们想保留那些非ascii字符,所以我们使用str:

str - Matches any non-empty string, excluding the path separator, '/'. This is the default if a converter isn’t included in the expression.

关于python - Django 不匹配 url 中的 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com