django3的变化
Posted xiaolee-tech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django3的变化相关的知识,希望对你有一定的参考价值。
最近跟着Django by Example 2015学习,可老想用最新版的Django3。在学的过程中可踩了不少坑。
今天就又碰到一个:
在这本书中96页有这样的代码:
url(r‘^login/$‘, ‘django.contrib.auth.views.login‘, name=‘login‘),
第一个坑:url被path替代。
第二个坑:上面的第二个参数已经不能用‘ xxx‘这样的格式。我从
django.contrib.auth中导入login,将上面的语句改为:
path(‘login/‘, login, name=‘login‘)(因为,django.contrib.auth.views.login中已经没有login了),
但服务器启动没事,一用到这个路由,就报错。好像是login函数获得的参数不对。
查了一个晚上,终于找到了原因所在。那个参数位置应该是一个视图函数的位置,而我们引入的
只不过是一个login登录函数。这个登录函数自然需要一个user参数了。这就是为什么报错缺少参数的原因了。
在django3中应该这样解决:
1 #首先导入: 2 3 from django.contrib.auth.views import LoginView 4 5 #然后,路由这样写: 6 urlpatterns = [ 7 path(‘login/‘, LoginView.as_view(), name=‘login‘), 8 ]
这样问题得到了解决!
教训:我纯粹是业余爱好,又喜欢新的东西,所以,不怕踩坑!如果要讲效率,还是要和书上的环境一致才好!
以上是关于django3的变化的主要内容,如果未能解决你的问题,请参考以下文章
Django3.0:来自数据库的图像在 debug=False 后未显示