Django 2.0 urlpatterns 设置

平台: Django 2.0.1 Python 3.6.3


之前学习Python的时候遇到过许多问题. 许多教程都是基于旧版本, 版本更新之后许多教程就不再适用了.


Django旧版本中设置url是这样的:

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
     # Examples:
     # url(r'^$', 'my_blog.views.home', name='home'),
     # url(r'^blog/', include('blog.urls')),

     url(r'^admin/', include(admin.site.urls)),
     url(r'^$', 'article.views.home'),  
 )

由于Django 2.0版本发布以后, 生成的默认配置变成了这样:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

url不见了, 变成了path. 如果按照教程导入patterns, include, url模块或者修改path为url就会导致各种报错. 比如:

TypeError: view must be a callable or a list/tuple in the case of include().
NameError: name 'url' is not defined
NameError: name 'include' is not defined\
ImportError: cannot import name 'views'

通过搜索并查阅了版本更新文档之后, 发现django.conf.urls.url()方法变成了django.urls.re_path(), django.conf.urls.include()方法现在从django.urls导入.
在实际项目中, 还需要导入views, 即from xxx import views, 把url方法改成path方法, 参考默认配置时生成的例子. 如下:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.xxx),
]

这样就可以正常的调用views里面的xxx方法了.


平台: Django 2.0.1 Python 3.6.3


你可能感兴趣的:(Django 2.0 urlpatterns 设置)