[Django] create login, logout using django.contrib.auth.urls

George
5 min readDec 9, 2018

--

建立django project,軟體環境使用pip, django 2.0 up

安裝上有可能因為版本問題,導致你無法使用path modules,你需要更新你的django版本。(例如你的django版本為1.11 or 1.10時)

> pip install --upgrade django

接下來進入正題

建立django project

> django-admin startproject [project_name]

進入django project

> cd [project_name]

在[project_name]/settings.py編輯

TEMPLATES = [
{
...,
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...,
},
]

在[project_name]/urls.py編輯

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
]

在[project_name]/下建立檔案: templates, registration, login.html, base.html, home.html.

> mkdir templates
> mkdir templates/registration
> touch templates/registration/login.html

編輯login.html

{% extends 'base.html' %}{% block title %}Login{% endblock %}{% block content %}
<h1>Login</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}

編輯base.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{% block title %}Django tutorial{% endblock %}</title>
</head>
<body>
<main>
{% block content %}
{% endblock %}
</main>
</body>
</html>

編輯home.html

{% extends 'base.html' %}{% block title %}Home page{% endblock %}{% block content %}
{% if user.is_authenticated %}
Hi {{ user.username }}!
<p><a href="{% url 'logout' %}">logout</a></p>
{% else %}
<p>You are not logged in</p>
<a href="{% url 'login' %}">login</a>
{% endif %}
{% endblock %}

再次編輯[project_name]/urls.py

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateViewurlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('', TemplateView.as_view(template_name='home.html'), name='home'),
]

啟動django

> python manage.py runserver

在瀏覽器上輸入

http://localhost:8000

要測試是否可以正常登入登出,需要建立帳號。

> python manage.py migrate

建立管理者帳號

> python manage.py createsuperuser

輸入帳號密碼確認後,你可以登入後台看是否有被成功建立,在瀏覽器上輸入:

http://localhost:8000/admin

如果你覺得文章很棒或有幫助到您,不妨幫我點個拍手吧! 謝謝…

--

--