使用者登入與登出
依慣例直接使用內建的應用程式 django.contrib.auth
來處理身分認證的作業。
新增路徑規則
開啟專案路徑規則檔 forum/forum/urls.py
,新增第 24 行規則:
urlpatterns = [
path('admin/', admin.site.urls),
path('topic/', include('topic.urls')),
path('', RedirectView.as_view(url='topic/')),
path('user/', include('django.contrib.auth.urls')),
]
修改網站設定值
開啟專案設定檔 forum/forum/settings.py
,在檔案最後新增以下設定值來指定登入後要導向的頁面路徑:
新增頁面範本
先新增資料夾 forum/pagetmpl/registration
,再新增登入頁面範本檔案 forum/pagetmpl/registration/login.html
,其內容如下:
{% extends "base.html" %}
{% block content %}
{% if form.errors %}
<p class="alert alert-danger">帳號或密碼不符合,請再試一次。</p>
{% endif %}
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table class="table table-sm">
{{ form.as_table }}
</table>
<div>
<input type="submit" class="btn btn-primary" value="登入" />
</div>
</form>
{% endblock %}
然後新增登出頁面範本檔案 forum/pagetmpl/registration/logged_out.html
:
{% extends "base.html" %}
{% block content %}
<p class="alert alert-info">您已登出!!</p>
<a href="{% url 'login' %}" class="btn btn-primary">請按此處重新登入</a>
{% endblock %}
修改導覽列範本 forum/pagetmpl/navbar.html
,修改為以下程式碼:
<nav class="navbar navbar-expand-sm navbar-dark bg-primary mb-2">
<div class="navbar-brand">
<i class="far fa-comment-alt"></i> 討論區
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a href="{% url 'topic_list' %}" class="nav-link">
<i class="fas fa-list"></i> 所有主題
</a>
</li>
<li class="nav-item">
<a href="{% url 'topic_new' %}" class="nav-link">
<i class="fas fa-edit"></i> 發起討論
</a>
</li>
<li class="nav-item">
{% if user.is_authenticated %}
<a href="{% url 'logout' %}" class="nav-link">
<i class="fas fa-sign-out-alt"></i> 登出{{ user.username }}
</a>
{% else %}
<a href="{% url 'login' %}" class="nav-link">
<i class="fas fa-sign-in-alt"></i> 登入
</a>
{% endif %}
</li>
</ul>
</div>
</nav>
使用者登入與登出
依慣例直接使用內建的應用程式
django.contrib.auth
來處理身分認證的作業。新增路徑規則
開啟專案路徑規則檔
forum/forum/urls.py
,新增第 24 行規則:修改網站設定值
開啟專案設定檔
forum/forum/settings.py
,在檔案最後新增以下設定值來指定登入後要導向的頁面路徑:新增頁面範本
先新增資料夾
forum/pagetmpl/registration
,再新增登入頁面範本檔案forum/pagetmpl/registration/login.html
,其內容如下:然後新增登出頁面範本檔案
forum/pagetmpl/registration/logged_out.html
:修改導覽列範本
forum/pagetmpl/navbar.html
,修改為以下程式碼: