Python
Django
Python3
Django2.0

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になって仕様が変わったのだろうか。