Django 2.0 路径错误? : (2_0. W001) 的路线包含 '(?P<' ,以 '^' 开始,或以 '$' 结束

标签 django django-views django-urls

我正在尝试为我的网站上的音乐应用程序创建后端代码。

我已经在我的views.py文件中创建了正确的 View (在正确的目录中),如下所示:

def detail(request, album_id):
    return HttpResponse("<h1>Details for Album ID:" + str(album_id) + "</h1>")

但是,在为此创建 URL 或路径时(如下所示)

#/music/71/ (pk)
path(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),

我在终端上遇到警告:

?: (2_0.W001) Your URL pattern '^(?P<album_id>[0-9])/$'
[name='detail'] has a route that contains '(?P<', begins with a '^',
or ends with a '$'. This was likely an oversight when migrating to
django.urls.path().

并且每当 /music/ (路径适用)后跟一个数字,例如 /music/1 (这就是我想要的能够做到)页面找不到,终端给出上述警告。

最佳答案

新的path() Django 2.0 中的语法不使用正则表达式。你想要这样的东西:

path('<int:album_id>/', views.detail, name='detail'),

如果要使用正则表达式,可以使用re_path() .

re_path(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),

url()仍然有效,现在是 re_path 的别名,但将来可能会被弃用。

url(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),

关于Django 2.0 路径错误? : (2_0. W001) 的路线包含 '(?P<' ,以 '^' 开始,或以 '$' 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47661536/

相关文章:

python - 如何注释 Django View 的方法?

python - 如何在django中跨多个页面维护数据?

当用户进入注册页面时,Django 自动注销用户

django - 在 URL 中同时显示 slug 和 ID,但仅在 Django 中按 ID 路由

python - Django - 一个 CBV 处理多种场景

linux - 权限被拒绝 OsError : [Errno 13] (file in use) Celery - Redis -Django

django - 通过 session key 在请求之间访问 pandas 数据框对象

python - 如何使用 Django 将 View 变量传递给模板

python - 如何将数据插入 Django 用户模型?

django - 找不到页面 (404) Django : 错误