【发布时间】:2016-03-09 20:42:50
【问题描述】:
新的 python/Django 用户(对 SO 来说确实是新用户):
在尝试迁移我的 Django 项目时,我收到一个错误:
RemovedInDjango110Warning: Support for string view arguments to url() is deprecated
and will be removed in Django 1.10 (got main.views.home). Pass the callable instead.
url(r'^$', 'main.views.home')
显然第二个参数不能再是字符串了。我是通过pluralsight.com上的教程来创建这段代码的,该教程教授如何将Django与以前的版本一起使用(我目前正在使用1.9)。老师指导我们根据我们在应用程序中创建的视图在 urls.py 中创建 urlpatterns。他教我们创建一个 urlpattern,如下所示:
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', 'main.views.home')
]
参考
def home(request):
return render(request, "main/home.html",
{'message': 'You\'ve met with a terrible fate, haven\'t you?'}) #this message calls HTML, not shown, not important for question
在我创建的应用程序“main”的 views.py 中。
如果不推荐使用此方法,我如何将视图参数不作为字符串传递?如果我只是删除引号,如文档 (https://docs.djangoproject.com/en/1.9/topics/http/urls/) 中所示,我会收到错误消息:
NameError: name 'main' is not defined
我尝试使用本文档中提供的代码“导入”视图或主视图:
from . import views
或
from . import main
这给了我:
ImportError: cannot import name 'views'
和
ImportError: cannot import name 'main'
我相信我已将其归结为导入错误,目前正在对此进行研究。
【问题讨论】:
-
欢迎堆栈溢出。 Django 在某一时刻改变了布局。我认为您希望从主要导入视图中获取,但不确定...您可以试试吗?
-
是的,我也检查了该方法,它的工作方式如下:如果使用“来自主导入视图”,那么您的 url 参数需要是 'url(...,views. home)' ,而不是 'url(..., main.views.home)' @joey wilhelm 在下面说明了这一点
标签: python django url deprecated