Python後臺開發----Django基礎實現

1.隨機選取
功能:隨機從數據庫選目標顯示在前臺
定義 urls ,models 等
這裏我定義了一個 user表裏面有三個用戶如下
在這裏插入圖片描述
當然這是通過後臺管理員添加同步到數據庫中
在 views視圖中寫入函數
在這裏插入圖片描述
detail.html

在這裏插入圖片描述
可以看出,q 對應的 context 中的 q
隨機拿出兩個對象獲取他們的 name 屬性
效果如下
在這裏插入圖片描述
在這裏插入圖片描述
每刷新一次,重新隨機選取一次
context 用來傳參

2.篩選條件
同樣在 views文件中
在這裏插入圖片描述
請注意:傳入參數只能是字典形式
上圖中 q 是對象,q.query 是 python查找語句對應的 sql 查找語句。如下
在這裏插入圖片描述
其中

    select  *  from  練習_user  where id=1   等價於 
    User.objects.get(id=1)
    ‘練習’ 是我的數據庫名
    注意: get()只能返回一個對象,
    要返回一堆的話用  User.objects.all()  或  filter(加限定條件)

index.html
在這裏插入圖片描述
結果圖
在這裏插入圖片描述

2.評論功能
目的:用戶登陸後完成評論,評論對他人可見,並被保存在數據庫中
應用: form 表單 , views 視圖 , index.html
這裏我們只需要修改前面代碼
(1)增加評論類並同步到數據庫與後臺
注意:當完成一整個項目時,models 一定要寫全,否則後面添加很麻煩
在這裏插入圖片描述

    這裏返回的 self.content 只有調用 Comment.objects.all() 時纔會返回評論對象,這裏
    返回的是 評論內容; 如果是 self.name 則返回評論人名字
    後面會有例子

(2)增加表單(和 views.py 同級)
forms.py
在這裏插入圖片描述
這裏定義的字段和 comment 類字段相同
記得在 admin.py添加

           admin.site.register(Comment)

views.py 修改爲
在這裏插入圖片描述
index.html (在 body 中寫入 )
在這裏插入圖片描述

這裏是一定要說道說道的,使用 comment 將 Comment類實例化成對象;
form 表單默認使用 post 方法,接着實例化 Commentform類,判斷 form對象是否存在,
如果存在保存在數據庫,不存在返回空;最終以參數方式傳入 index.html;
而 index中第二行是爲了防止跨站請求僞造攻擊
效果如下
在這裏插入圖片描述
寫入信息保存後提交,仍然能看到寫入信息,並且mysql數據庫內也有

  這裏context內寫入 comment 只是爲了驗證  Comment 類的返回字段
  去掉後就不會返回 comment對象

我們隨機驗證一下
在這裏插入圖片描述
數據庫
在這裏插入圖片描述
附:如果想要返回其他類的屬性字段, 只需要在 context 參數中寫入並展現在 HTML頁面上即可

3.權限更改與繼承
(自定義Users和Groups組繼承django自帶的User和Groups)

我們知道 Django 後臺管理默認給增加的模型3個權限,增加,修改,刪除;
在django 2.0 之後有查看功能,那麼如果這4個權限不夠,就需要我們手動添加了。

(1)自定義權限
先導入模塊

  from  django.contrib.auth.models import  Group,AbstractUser 
  這是兩個 django自帶權限管理模塊,就是我們進入 admin 後看到的認證和授權

定義model
在這裏插入圖片描述
分別是管理員和管理員組模型,權限裏面,第一個是權限名,第二個是權限功能;
再同步到 admin.py中
在這裏插入圖片描述
並在 settings.py 中添加

  AUTH_USER_MODEL='zan.Users'
  zan 是 app名稱    Users是第一個繼承模型

進行模型更改和數據庫遷移

   python  manage.py  makemigrations
   python  manage.py  migrate

定義視圖函數檢驗,在 index.html 中寫入
在這裏插入圖片描述
運行後看到
在這裏插入圖片描述
列出所擁有的全部權限
(2)設置自動添加管理員組
在 view.py 中寫入函數,並重新定義一個路由
在這裏插入圖片描述
因爲我們設置了多對多關聯,所以可以在管理員組中添加管理員

(3)後臺查看
輸入admin
在這裏插入圖片描述
這裏有一些我之前定義的模型,我們看到管理員和管理員組都存在
分別進入查看
在這裏插入圖片描述
在這裏插入圖片描述
我們擁有 django 自帶的全部權限和我們定義的新權限
當然我們可以通過

 python  manage.py  shell  進行檢測
 導入模型
 Users.objects.get(username='xxx')  獲取管理員對象
 Users.objects.get(username='xxx').has_perm('appname.權限名‘)   
 判斷是否擁有該權限  返回布爾值
 Users.objects.get('username='xxx').user_permissions.all()
 獲取該管理員的所有權限

 Groups.objects.get(name='xxx')      獲取管理員組對象
 Groups.objects.get(name='xxx').permissions.all()    獲取管理員組的所有權限 
 Groups.objects.get(name='xxx').permissions.clear()  清除管理員組的所有權限

 user對象.user_permissions.clear()       清除管理員所有權限
 user對象.user_permissions.add/remove(權限對象)  增加,刪除管理員的權限
 權限對象通過導入django自帶的Permission模塊
 Permission.objects.get(codename='xxx')   獲得權限對象 ,
 必須是一個對象而不是查詢集
 
 user對象.groups.remove/add(組對象)   管理員增加,刪除自己所處的管理員組
發佈了105 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章