Django 1.11b1中path()的替代方案及代码修改方法
解决Django 1.11中path()不可用的问题
嘿,这个问题我太熟悉了!Django 1.11确实还没推出path()这个简洁的URL定义方法,它是Django 2.0才引入的新特性。咱们只需要把代码里的path()换成Django 1.11支持的url()函数,再调整一下路径的写法就行。
修改后的完整代码
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^moraimono/', include('moraimono.urls')), url(r'^admin/', admin.site.urls), ]
关键说明
- 替换
path()为url():Django 1.11及更早版本依赖url()来定义URL模式,它本质是基于正则表达式进行匹配的。 - 正则表达式前缀
^:url()的第一个参数是正则表达式,所以我们要给路径加上^(表示从URL的开头开始匹配)。这里不用加结尾的$,因为include()会负责处理子应用里的后续URL,如果加了$,子应用的URL就无法被正确匹配了。 include()用法兼容:原来的include('moraimono.urls')在两个版本里都能正常工作,所以这部分完全不用改动。
如果之后你需要精确匹配某个独立的路径(比如网站首页),记得在正则末尾加上$,比如url(r'^$', views.home_page),这样就只会匹配根路径啦。
内容的提问来源于stack exchange,提问作者Parry
相关产品推荐
相关产品推荐

