Django 1.9 中的新 url 格式

Posted

技术标签:

【中文标题】Django 1.9 中的新 url 格式【英文标题】:New url format in Django 1.9 【发布时间】:2016-03-10 13:34:05 【问题描述】:

我最近将我的 Django 项目升级到了 1.9 版。

当我尝试运行 migrate 时,出现以下两个错误:

    Support for string view arguments to url() is deprecated and will be removed in Django 1.10 (got app.views.about). Pass the callable instead. django.conf.urls.patterns() is deprecated and will be removed in Django 1.10. Update your urlpatterns to be a list of django.conf.urls.url() instances instead.

有人可以告诉我如何做到这一点的正确语法吗?我的urls.py 的简短示例如下:

urlpatterns = patterns('',
    url(r'^about/$', 'app.views.about',
        name='about'),
)

urlpatterns += patterns('accounts.views',
    url(r'^signin/$', 'auth_login',
        name='login'),
)

谢谢!

【问题讨论】:

这里是doc 【参考方案1】:

直接导入您的视图,或您的视图模块:

from apps.views import about
from accounts import views as account_views

根本不要使用patterns,只使用列表或元组:

urlpatterns = [
    url(r'^about/$', about,
        name='about'),
]

urlpatterns += [
    url(r'^signin/$', account_views.auth_login,
        name='login'),
]

【讨论】:

【参考方案2】:

您应该删除视图名称周围的引号。 所以你的代码会是这样的

urlpatterns = patterns('',
    url(r'^about/$', app.views.about, #without quote!
        name='about'),
)

第 2 点,使用列表,因此您的代码将转换为

urlpatterns = [
        url(r'^about/$', app.views.about, #without quote!
            name='about'),
    ]

【讨论】:

以上是关于Django 1.9 中的新 url 格式的主要内容,如果未能解决你的问题,请参考以下文章

django从1.7升级到1.9后 提示:RemovedInDjango110Warning

4.URL基本概念及格式 && Django中实战使用

4.URL基本概念及格式 && Django中实战使用

Python Django 1.9 迁移错误“创建新内容类型时出错...”

django中的url控制

如何在 Django 1.9 中传递可调用对象