Django Girls Tutorial: Extensions のユーザー認証のところではまった話

Django Girls Tutorial: Extensions のユーザー認証のところではまった話:


この記事について

Django Girls Tutorial

の続編(おまけ?)である、
Django Girls Tutorial: Extensions

を読んでいて少しはまったので、解決策を備忘として書く。

環境

・python3.6

・Django2.1

・Ubuntu18


何が起こったか

上記 Django Girls Tutorial: Extensions の中の
Homework: Adding security to your website

を読んでいた。

このチャプターの内容は、

・本編で作ったブログサイトにログイン・ログアウトの機能をつける

・ログイン中の人しか記事の作成・編集・削除ができないようにする

というもの。

一番最後のところで、ログイン・ログアウト画面のパスを追加するために

mysite/urls.pyを下記のように変更したところエラー

mysite/urls.py
from django.contrib import admin 
from django.urls import path 
from django.conf.urls import include, url 
from django.contrib.auth import views 
 
urlpatterns = [ 
    path('admin/', admin.site.urls), 
    path('', include('blog.urls')), 
    path('accounts/login/', views.login, name='login'), 
    path('accounts/logout/', views.logout, name='logout', kwargs={'next_page': '/'}), 
] 
(Django Girlsのサイトでは上記のように path() は使わず url() と正規表現でパスを指定しているが、Django2 ではパスを指定する際に正規表現ではなく path() を使うといいよとのことなので path() を使うようにしている。
Django2.0以降の変更点で気づいたポイント:path設定 "path"を使ったinclude

コンソールに書かれたエラー内容が

AttributeError: module 'django.contrib.auth.views' has no attribute 'login' 
とのこと。django.contrib.auth.views が login の属性を持っていないらしい。

上記の文字列でググると stack overflow の記事
AttributeError: module Django.contrib.auth.views has no attribute

が出てきたが、真似してみるも上手くいかず。


解決方法

最終的に
Django2 でユーザー認証(ログイン認証)を実装するチュートリアル -2- サインアップとログイン・ログアウト

を参考にして

mysite/urls.py
from django.contrib import admin 
from django.urls import path 
from django.conf.urls import include 
 
urlpatterns = [ 
    path('admin/', admin.site.urls), 
    path('', include('blog.urls')), 
    path('accounts/', include('django.contrib.auth.urls')), 
] 
とすると動いた。

もともとDjango側でユーザー認証用のurlsが用意されているっぽい。

Django2になって仕様が変わったのだろうか。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)