溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在django admin中添加自定義視圖的例子

發(fā)布時間:2020-09-19 21:11:59 來源:腳本之家 閱讀:422 作者:瘋琴 欄目:開發(fā)技術

django admin提供了完善的用戶管理和數據模型管理,方便實用。研究了一下在admin里面添加自己的頁面。

在admin.py里繼承django.contrib.admin.ModelAdmin基類

class FaceAdmin(admin.ModelAdmin):

然后在里面寫自己的視圖處理函數?;惱锩娴膕ave_model和delete_model函數可以做數據對象的新建和刪除的預處理和后處理。自建的函數如果要redirect到自己建的view,反向映射要包含admin:,寫成

return HttpResponseRedirect(reverse('admin:manage_face_image', args=(face_id,)))

然后添加一個獲取路由的函數,把自己的路由添加上

def get_urls(self):
  urls = super().get_urls()
  my_urls = [
    path('<int:face_id>/manage_face_image/',
       self.admin_site.admin_view(self.manage_face_image), name='manage_face_image'),
    path('<int:face_id>/<str:face_file>/delete_face_image/',
       self.admin_site.admin_view(self.delete_face_image), name='delete_face_image')
  ]
  return my_urls + urls

最后把子類和數據模型一起注冊成admin的站點:

admin.site.register(Face, FaceAdmin)

這樣就可以通過/admin/app/face/5/manage_face_image/這個url來訪問自己的視圖了。詳細說一下,admin是指admin站點,app是指自己的djangoapp,face是數據模型。

自定義視圖的模板在最頂上繼承admin_site的基模板

{% extends "admin/base_site.html" %}

但是會發(fā)現右上角沒有正常的admin網站包含的歡迎信息和站點視圖以及修改密碼和注銷的鏈接。因為在base_site.html的基模板base.html中有一個判斷{% if has_permission %},這是django.contrib.admin.AdminSite類的一個屬性,返回的是user.is_active and user.is_staff,我們沒有繼承這個基類所以沒有這個屬性,其實base.html就在下面幾行也有這個判斷,方便起見直接把if has_permission這個判斷刪了就行了,雖然仍然沒有站點視圖,但是已經好看多了。還有一點要注意的是模板在用url時要加上admin:,寫成

{% url 'admin:manage_face_image' face_id %}

以上這篇在django admin中添加自定義視圖的例子就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)
推薦閱讀:
  1. django框架
  2. Django的初識

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI