Django1.10中没有了patterns以后

背景:Django1.10以后的版本已经不再引入patterns了,所以需要修改一下原有的代码。

原有的代码:

1. view.py

# coding: utf-8
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello World.")


2.polls文件夹下的urls.py

# coding: utf-8
from django.conf.urls import patterns, url
from polls import views

urlpatterns = patterns('', url(r'^$', views.index, name='index'),)


3.mysite文件夹下的urls.py

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

urlpatterns = patterns('', url(r'^polls/', include('polls.urls')),
            url(r'^admin/', include(admin.site.urls)), )
   
报错: ImportError: canot import name patterns

原因:Django1.10以后patterns被移除,已经没有这个模块了

步骤:

1. 修改polls/urls.py和mysite/urls.py中导入的包。把 from django.conf.urls import patterns, include, url 改为:from django.conf.urls import url

2. 修改代码

1)polls/ urls.py 改为:

urlpatterns = [url(r'^$', views.index, name='index'),]

2)mysite/ urls.py 改为:

urlpatterns = urlpatterns = [
     url(r'^polls/', 'polls.urls'),
     url(r'^admin/', admin.site.urls),
]

报错:TypeError: view must be a callable or a list/tuple in the case of include().

原因:没有引入include


3. 加上include包

把原有的 from django.conf.urls import url 修改为:from django.conf.urls import include,url


4. 修改代码

urlpatterns = [
     url(r'^polls/', polls.urls),
     url(r'^admin/', admin.site.urls),
]

报错:NameError: name 'polls' is not defined

原因:没有在代码中加入include()


5. 再次修改代码

urlpatterns = [
     url(r'^polls/', include('polls.urls', namespace="polls")),
     url(r'^admin/', include(admin.site.urls)),
]

运行未出现报错,页面显示正常

你可能感兴趣的:(其他)