BBS項目架構

數據庫設計前端

用戶表(用的是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.點擊回覆,生成子評論。

相關文章
相關標籤/搜索