讀者管理
讀者管理的應用程式在建立專案時也已經建立完畢,直接撰寫應用程式的內容就好。
定義讀者資料模型
開啟 library/reader/models.py
,新增以下程式碼:
class Reader(Model):
realname = CharField('姓名', max_length=32)
tel = CharField('聯絡電話', max_length=255)
email = EmailField('電子信箱')
def __str__(self):
return "{} / {} / {}".format(
self.realname,
self.email,
self.tel
)
執行以下指令以套用至資料庫
python manage.py makemigrations
python manage.py migrate
重新啟動網站服務
python manage.py runserver 0.0.0.0:80
新增讀者管理路徑規則
開啟檔案 library/reader/urls.py
,修改為以下程式碼:
from django.urls import path
from .views import *
urlpatterns = [
path('', ReaderList.as_view(), name='reader_list'),
path('add/', ReaderAdd.as_view(), name='reader_add'),
path('<int:pk>/', ReaderView.as_view(), name='reader_view'),
path('<int:pk>/edit/', ReaderEdit.as_view(), name='reader_edit'),
path('<int:pk>/delete/', ReaderDelete.as_view(), name='reader_delete'),
]
修改專案路徑檔 library/library/urls.py
,加入第 27 行:
urlpatterns = [
path('admin/', admin.site.urls),
path('user/', include('django.contrib.auth.urls')),
path('', RedirectView.as_view(url='book/')),
path('book/', include('book.urls')),
path('reader/', include('reader.urls')),
]
新增讀者管理處理視圖
開啟 library/reader/views.py
,修改為以下內容:
from django.urls import reverse_lazy
from django.views.generic import *
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import *
class ReaderList(LoginRequiredMixin, ListView):
model = Reader
ordering = ['realname']
paginate_by = 20
class ReaderView(LoginRequiredMixin, DetailView):
model = Reader
class ReaderAdd(LoginRequiredMixin, CreateView):
model = Reader
fields = '__all__'
template_name = 'form.html'
success_url = reverse_lazy('reader_list')
class ReaderEdit(LoginRequiredMixin, UpdateView):
model = Reader
fields = '__all__'
template_name = 'form.html'
success_url = reverse_lazy('reader_list')
class ReaderDelete(LoginRequiredMixin, DeleteView):
model = Reader
template_name = 'confirm_delete.html'
success_url = reverse_lazy('reader_list')
建立讀者管理相關頁面範本
新增導覽列連結
開啟導覽列頁面範本檔案 library/templates/navbar.html
,新增第 18 - 22 行增加讀者管理連結:
{% if user.is_authenticated %}
<li class="nav-item">
<a href="{% url 'book_list' %}" class="nav-link">
<i class="fas fa-book"></i> 圖書列表
</a>
</li>
<li class="nav-item">
<a href="{% url 'reader_list' %}" class="nav-link">
<i class="fas fa-book-reader"></i> 讀者列表
</a>
</li>
<li class="nav-item">
<a href="{% url 'logout' %}" class="nav-link">
<i class="fas fa-sign-out-alt"></i> 登出 {{ user.username }}
</a>
</li>
{% else %}
讀者列表
建立 library/templates/reader
資料夾,然後再新增讀者列表頁面範本檔案 library/templates/reader/reader_list.html
:
{% extends "base.html" %}
{% block content %}
<div class="mb-1">
<a href="{% url 'reader_add' %}" class="btn btn-sm btn-primary">
<i class="fas fa-plus"></i> 新增讀者
</a>
</div>
<div id="reader-list">
<table class="table table-sm">
<thead>
<tr>
<th>姓名</th><th>電話</th><th>電子信箱</th><th>操作</th>
</tr>
</thead>
<tbody>
{% for reader in reader_list %}
<tr>
<td>
<a href="{% url 'reader_view' reader.id %}">{{ reader.realname }}</a>
</td>
<td>{{ reader.tel }}</td>
<td>{{ reader.email }}</td>
<td>
<a href="{% url 'reader_delete' reader.id %}" class="btn btn-sm btn-danger">刪除</a>
<a href="{% url 'reader_edit' reader.id %}" class="btn btn-sm btn-primary">修改</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% include "pagination.html" %}
{% endblock %}
檢視讀者
新增檢視讀者頁面範本檔案 book/temapltes/web/reader_detail.html
{% extends "base.html" %}
{% block content %}
<div id="reader-detail">
<div class="row">
<div class="col-md-4">
<div class="card">
<div class="card-header">
{{ reader.realname }}
</div>
<table class="table table-sm">
<tr>
<th>電話</th>
<td>{{ reader.tel }}</td>
</tr>
<tr>
<th>電子信箱</th>
<td>{{ reader.email }}</td>
</tr>
</table>
</div>
</div>
<div class="col-md-8">
</div>
</div>
</div>
{% endblock %}
仿照圖書檢視的頁面範本,將頁面分成左右兩塊,分別佔用 1/3 與 2/3 的寬度,將讀者的基本資料以卡片形式顯示在左邊,右邊保留給之後顯示讀者的借閱紀錄時使用。
新增讀者、編輯讀者、刪除讀者
新增讀者與編輯讀者的頁面範本直接共用 form.html
,而刪除讀者則共用 confirm_delete.html
即可,不需另外準備。
讀者管理
讀者管理的應用程式在建立專案時也已經建立完畢,直接撰寫應用程式的內容就好。
定義讀者資料模型
開啟
library/reader/models.py
,新增以下程式碼:執行以下指令以套用至資料庫
重新啟動網站服務
新增讀者管理路徑規則
開啟檔案
library/reader/urls.py
,修改為以下程式碼:修改專案路徑檔
library/library/urls.py
,加入第 27 行:新增讀者管理處理視圖
開啟
library/reader/views.py
,修改為以下內容:建立讀者管理相關頁面範本
新增導覽列連結
開啟導覽列頁面範本檔案
library/templates/navbar.html
,新增第 18 - 22 行增加讀者管理連結:讀者列表
建立
library/templates/reader
資料夾,然後再新增讀者列表頁面範本檔案library/templates/reader/reader_list.html
:檢視讀者
新增檢視讀者頁面範本檔案
book/temapltes/web/reader_detail.html
仿照圖書檢視的頁面範本,將頁面分成左右兩塊,分別佔用 1/3 與 2/3 的寬度,將讀者的基本資料以卡片形式顯示在左邊,右邊保留給之後顯示讀者的借閱紀錄時使用。
新增讀者、編輯讀者、刪除讀者
新增讀者與編輯讀者的頁面範本直接共用
form.html
,而刪除讀者則共用confirm_delete.html
即可,不需另外準備。