Django 2.0 url() 到 path()

Posted

技术标签:

【中文标题】Django 2.0 url() 到 path()【英文标题】:Django 2.0 url() to path() 【发布时间】:2018-06-15 20:25:09 【问题描述】:

我目前正在学习 Django。 到目前为止,我使用的是 Django 1.1,但现在我使用的是 Django 2.0。 Django 2.0 使用 path() 而不是 url(),我不太明白。

在 Django 1.1 中,我的网址如下所示:

url(r'^about/$', views.AboutView.as_view(), name='about'),

现在有了 Django 2,它看起来像这样

path('about/', views.AboutView.as_view(), name='about'),

到目前为止一切顺利,但我只是不明白如何转换它

url(r'^post/(?P<pk>\d+)$', views.PostDetailView.as_view(), 
name='post_detail'),

以便它适用于新版本。只是将 url 更改为 path 不起作用,将 url 更改为 re_path 也不起作用。有人可以帮我解决这个问题吗?

提前致谢

【问题讨论】:

第一,url()仍然存在,第二re_path()完全url()相同;它们是同一函数的别名。因此,如果您的代码现在可以工作,那么re_path() 就不可能“不工作”。 【参考方案1】:

正则表达式要以不同的方式放置。

path('post/<int:pk>', views.PostDetailView.as_view(), name='post_detail'),

我刚刚在我的一个项目中使用与您相同的 url 尝试并测试了它,它可以工作。他们通过让在那里使用关键字int 使网址更简单和可读。

这是新方法,请阅读release notes 他们已经清楚地提到了这些变化。

【讨论】:

以上是关于Django 2.0 url() 到 path()的主要内容,如果未能解决你的问题,请参考以下文章

Django 2.0URL新版配置介绍

Django 2.0 新款URL配置详解

Django 2.0 的路由如何实现正则表达式

带有 Django 2.0 的 Django REST 框架 URL

Django 2.0 新款URL配置详解

如何在 django 2.0 中的 url 中有选项