數據庫設計前端
用戶表(用的是auth_user那張表,經過自定義表繼承AbstractUser)ajax
phone 電話
avatar 頭像
create_time 建立時間
#外鍵
blog 一對一我的站點表
我的站點表數據庫
site_name 站點名
site_title 名言警句
site_theme 樣式
標籤表django
name 標籤名
#外鍵
blog 一對多我的站點 每一個站點含有多個標籤
分類表後端
name 分類名
#外鍵
blog 一對多我的站點 每一個站點含有多個分類
文章表mybatis
title 文章標題 desc 文章摘要 content 文章內容 create_time 文章建立時間 #外鍵 blog 一對多我的站點 一個站點下能夠有多篇文章 tag 多對多標籤 一個文章有多個標籤,一個標籤能夠對應多篇文章 category 一對多分類 一個分類下面有多篇文章 #普通字段 # 數據庫設計優化(******)設置這些就不用去點贊點踩表中查詢數據了,減小數據庫查詢量 #開一個事務,當你操做點贊點踩表的時候,下面這些數據也會改變 評論數 comment_num 普通字段 點贊數 up_num 普通字段 點踩數 down_num 普通字段
點贊點踩表app
user 一對多用戶表 一個贊只能對應一個用戶,一個用戶能點不一樣的贊
article 一對多文章表 一個贊只能對應一篇文章,一篇文章能有多個贊
is_up 0/1
評論表數據庫設計
user 一對多用戶表 一個評論是一個用戶寫的,一個用戶能寫多個評論
article 一對多文章表
comment 評論內容
create_time 建立時間
parent 一對多評論表(自關聯) 父評論的id 若是有值說明你是子評論 若是沒有值說明你是父評論
註冊功能 利用forms組件來校驗登陸信息是否正確,而且渲染頁面函數
1.文件輸入框設置了id='myfile'和隱藏文件輸入框,在label標籤設置for='myfile',那麼點擊頭像兩個字就有彈出文件輸入框的效果。學習
<label for="myfile">頭像 設置默認頭像圖片 <img src="/static/img/default.jpg" alt="" height="80" style="margin-left: 20px" id="img"> </label> <input type="file" id="myfile" style="display: none"> #文件輸入框
註冊功能大體流程:
1.在views視圖建立一個forms對象,傳遞到模板層,渲染出輸入框
2.註冊頁面選擇頭像在ajax用Filereader對象讀取。
3.在模板層寫ajax的數據提交,views視圖層接收數據,forms組件接收數據校驗,直接把request.POST傳給forms組件校驗
4.傳到後臺
登陸功能
主頁功能
2019-9-27
註銷功能
auth.logout(request)
修改密碼
複製一個模態框放在頁面
form表單提交必定要是input標籤,不能是button
admin後臺管理
先建立一個超級用戶登陸後臺
在應用中找到admin.py文件 而後註冊 你想要操做的默寫表便可,使用超級管理員帳戶 便可登陸後臺進行數據的管理
from django.contrib import admin from app01 import models admin.site.register(models.UserInfo) admin.site.register(models.Blog) admin.site.register(models.Tag) admin.site.register(models.Category) admin.site.register(models.Article2Tag) admin.site.register(models.Article) admin.site.register(models.UpAndDown) admin.site.register(models.Comment)
用戶頭像展現
主頁面展現
我的主頁搭建
我的站點表site_name和用戶名設置同樣的
步驟:
1.先驗證輸入的我的站點是否存在
查詢filter返回的結果 ,queryset對象(單個Queryset對象)
打印結果:<QuerySet [<UserInfo: jason>]>
打印類型:<class 'django.db.models.query.QuerySet'>
查詢filter>> first()
打印結果: jason 這個也是一個對象 打印類型:<class 'app01.models.UserInfo'>
多個Queryset對象(傳遞到後臺須要for循環取出)
<QuerySet [<Article: .Net Core 添加 Swagger 支持>, <Article: Docker Compose與Docker Stack的不一樣之處>, <Article: 新手學習FFmpeg - 調用API完成視頻的讀取和輸出>, <Article: 瞭解一下Java SPI的原理>, <Article: Django+MySQL Dashboard 網頁端數據庫可視化>, <Article: mybatis中collection association優化使用及多參數傳遞>, <Article: 200行代碼實現Mini ASP.NET Core>]>
側邊欄渲染
側邊欄功能
2019-9-28
1、文章詳情頁搭建
內容和樣式複製博客園的,注意要在前端頁面顯示內容的代碼在|safe,取消前端代碼轉義
2、點贊點踩功能
1.先校驗用戶是否登陸
request.user.is_authenticated()
2.校驗用戶點贊點踩的這篇文章是不是本身寫的
3.校驗當前用戶是否已經對這篇進行過點贊或者點踩
4.修改數據記錄 在文章表中和點贊點踩表都要記錄
用到了F查詢
models.Article.objects.filter(pk=article_id).update(up_num=F('up_num')+1)
在對錶數據查詢或者建立的時候,若是字段是外鍵,給字段傳一個對象,若是字段是普通字段,那就傳一個具體值。(******)最好是這樣
article_obj = models.Article.objects.filter(pk=article_id,blog=blog).first()
在Article表中,pk是個普通字段傳一個具體指article_id,blog是一個外鍵,全部傳一個blog對象
models.UpAndDown.objects.create(article=article_obj,user=request.user,is_up=is_up)
或者(若是沒有對象值,也能夠拿具體的值傳)
models.UpAndDown.objects.create(article_id=article_id,user=request.user,is_up=is_up)
第一種是根據models字段來寫的,第二種是按照數據庫字段寫法來寫的
5.在後端取消標籤轉義
from django.utils.safestring import mark_safe mark_safe('請先<a href="/login/">登陸</a>')
前端ajax判斷:
1.判斷點擊的是點贊仍是點踩
根據點擊的標籤是否有某個類屬性,獲得一個字符串格式的布爾值。來判斷是點贊仍是點踩。
傳遞文章id和布爾值給後端
回調函數接收後端返回的結果,根據code來判斷,符合條件就在修改頁面的點贊或者點踩數
3、文章的評論
取消浮動
class="clearfix"
1.作好評論框和評論列表的樣式
2.ajax判斷是根評論仍是子評論,截取不一樣的內容返回給後端,獲取文章id和評論內容傳給後端
3.後端POST接收數據,作數據同步,數據要保存到評論表和文章表的評論字段,這裏用事務來寫。
4.前端接收後端返回的code,進行判斷,把用戶評論的內容加到評論列表中,須要本身定義列表樣式。
5.點擊回覆,生成子評論。