學習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 ]

 

這樣問題得到了解決!

教訓:我純粹是業余愛好,又喜歡新的東西,所以,不怕踩坑!如果要講效率,還是要和書上的環境一致才好!

 

27日增加:

今天又研究了一天,終於把這個用戶認證這一塊搞明白了!實際上用戶認證主一塊Django已經給我們准備好了!Djnago3中只用把相關的路由文件導入就可以用了!

你打開這個Django.contrib.auth.urls一看就全明白了。

只需要在你的應用的路由文件中加入一行:

path('', include('Django.contrib.auth.urls'))

這個文件里沒別的東西,就是幾條路由!

 1 # The views used below are normally mapped in django.contrib.admin.urls.py
 2 # This URLs file is used to provide a reliable view deployment for test purposes.
 3 # It is also provided as a convenience to those who want to deploy these URLs
 4 # elsewhere.
 5 
 6 from django.contrib.auth import views
 7 from django.urls import path
 8 
 9 urlpatterns = [
10   path('login/', views.LoginView.as_view(), name='login'),
11   path('logout/', views.LogoutView.as_view(), name='logout'),
12 
13   path('password_change/', views.PasswordChangeView.as_view(), name='password_change'),
14   path('password_change/done/', views.PasswordChangeDoneView.as_view(), name='password_change_done'),
15 
16   path('password_reset/', views.PasswordResetView.as_view(), name='password_reset'),
17   path('password_reset/done/', views.PasswordResetDoneView.as_view(), name='password_reset_done'),
18   path('reset/<uidb64>/<token>/', views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
19   path('reset/done/', views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
20 ]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM