6.1 - 圖書增刪改查頁面
阿新 • • 發佈:2018-05-31
通過 之前 lock art 視圖 publish 註意事項 val 腳本
一、需求及註意事項
需求:
1.列出圖書列表、出版社列表、作者列表
2.點擊作者,會列出其出版的圖書列表
3.點擊出版社,會列出其下的圖書列表
4.可以創建、修改、刪除 圖書、作者、出版社
完成及註意事項:
1.註冊
/register/
2.登錄
/login/
3.註銷
/logout/
4.圖書列表
/book_list/
/add_book/
/update_book/303/
/del_book/
5.出版社列表
/publisher_list/
/add_publisher/
/update_publisher/105/
/update_book/306/105/publisher/ # 通過出版社,修改該書,之後返回出版社頁面
/del_publisher/
/book_list/105/publisher/ # 通過出版社,查看該出版社得圖書列表
/add_book/105/publisher/ # 通過出版社,增加該出版社得某本書
/del_book/105/publisher/ # 通過出版社,刪除該出版社得某本書
6.作者列表
/author_list/
/add_author/
/update_author/67/
/update_book/307/67/author/ # 通過作者,修改該書,之後返回作者頁面
/del_author/
/book_list/67/author/ # 通過作者,查看該作者得圖書列表
/add_book/67/author/ # 通過作者,增加該作者得某本書
/del_book/67/author/ # 通過作者,刪除該作者得某本書
7.驗證是否登錄(session),跳轉到之前訪問得頁面:
采用中間件 mymiddleware.py
def process_request(self,request):pass
白名單 黑名單
8.驗證是否登錄,裝飾器!
def check_login(func):pass
最後采用中間件,
否則每一個函數都有要加裝飾器。(@check_login)
9.批量插入測試數據
腳本 myscript.py
models.Book.objects.bulk_create(ret1)
10.自定義分頁器
mypage.py
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
封裝
上一頁,下一頁,首頁,尾頁
11.模板繼承
base.html
{% extends ‘base.html‘ %}
{{ block.super }} 可以引用基類模板的內容
12.靜態文件
jquery-3.2.1.js
bootstrap-3.3.7
ajax發送post請求時
init_ajax.js
取 csrf token 的值發送
刪除,頁面得模態框 插件
sweetalert
13.settings配置文件
中間件
mysql
終端打印sql語句
logging
登錄註冊,會有日誌記錄
14.自定義過濾器和標簽
templatetags/my_tag_filter.py
{% load my_tag_filter %}
{{ path|update_path:book.id}}
15.urls
分發,名稱空間,有名分組,反向解析
re_path(r‘^update_book/(?P<id>\d+)‘,views.update_book),
正則反向解析,需要賦值
return redirect(reverse(‘book:book_publisher‘,args=(type_id,)))
16.FBV CBV
FBV(function base views) 視圖裏使用函數處理請求
CBV(class base views) 視圖裏使用類處理請求
path(‘login/‘,views.LoginView.as_view(), name = ‘login‘)
class LoginView(View):pass
給CBV加裝飾器:
@method_decorator(check_login)
def dispatch(self, request, *args, **kwargs):pass
17.表單forms組件
myforms.py
為forms組件賦初值
https://docs.djangoproject.com/en/2.0/ref/forms/api/
publisher_form.initial = {‘name‘:publisher.name}
表單控件
給每一個key添加樣式
def __init__(self,*args,**kwargs):pass
select下拉框:新增加的出版社,想不重啟,立刻就顯示:
def __init__(self,*args,**kwargs):pass
新增加書時,選擇新增加的出版社
不能立刻通過校驗is_valid 需要等一會,就通過了
18.DateTimeField
auto_now
auto_now_add
timezone
http://www.nanerbang.com/article/5488/
django:DateTimeField如何自動設置為當前時間並且能被修改:
DateTimeField.auto_now 如果為true 無法賦值,每次更新為最新時間;
DateTimeField.auto_now_add 如果為true 無法賦值,第一次創建時間
from django.db import models
import django.utils.timezone as timezone
class Doc(models.Model):
add_date = models.DateTimeField(‘保存日期‘,default = timezone.now)
mod_date = models.DateTimeField(‘最後修改日期‘, auto_now = True)
19.ORM表關系
一對一,(author authordetail)
刪除author時,應該刪除authordetail,關聯的author就被刪除了!
一對多,(book publisher)
刪除出版社下面的某本書,拿到書的id,刪除這本書;
多對多,(book author)
清除綁定關系,不應該刪除書;
啟動:
配置sql
python manage.py makemigrations
python manage.py migrate
詳情:
需查看代碼!!
二、數據庫
三、頁面效果
四、主要代碼
6.1 - 圖書增刪改查頁面