广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
6.2.1 AdminSite对象
在6.1节的内容中使用了admin.site.register方法来注册模型,执行admin.site时,django会构造一个名为admin的AdminSite对象。django使用AdminSite对象对站点后台进行管理,可以说一个AdminSite对象即对应于一个后台管理系统,通过覆盖AdminSite对象的属性和方法,可以对后台站点进行自定义。本节内容着重对AdminSite对象进行讲解,学习的是AdminSite类型的构造函数,以及AdminSite对象的常用属性和方法。
6.2.2 AdminSite类型的构造函数
AdminSite(name='admin')
参数name用来表示一个唯一的AdminSite实例对象。
代码实例:
blog_admin = AdminSite(name='BlogAdmin')user_admin = AdminSite(name='UserAdmin')
在上文代码中,blog_admin与user_admin即表示不同的AdminSite对象,在实际开发中如需对模型进行分开管理,可以实例化多个AdminSite对象。例如在上文的代码中,blog_admin用来对博客文章进行管理,user_admin用来对站点的用户进行管理,那么在urls.py中的配置为:
# blog为笔者创建的django应用 from blog.admin import blog_admin,user_admin urlpatterns = [ path('blog_admin/', blog_admin.site.urls), path('user_admin/', user_admin.site.urls), ]
6.2.3 AdminSite对象的常用属性
属性名 | 描述 |
site_title | 用来定义后台站点的页面标题名称,对应的是html的<title>标签 |
site_header | 用来定义后台站点的页面顶部标题,对应的是html中的<h1>标签 |
site_url | 用来定义站点首页的url,在对后台站点进行汉化以后,site_url对应的是后台页面'查看站点'所对应的链接。 |
index_title | 用来定义后台首页的页面标题 |
index_template | 用来定义后台首页的页面,需传递自定义的模板路径 |
login_template | 用来定义登录页,需传递自定义的模板路径 |
现在通过覆盖AdminSite对象的属性,来对站点进行自定义。使用AdminSite对象进行站点自定义的核心流程:
(1) 从AdminSite中进行继承,对属性进行覆盖
代码实例:
from django.contrib import admin # 导出AdminSite类 from django.contrib.admin import AdminSite # 从models.py中导出Blog from .models import Blog # 定义ModelAdmin的子类型 class BlogAdmin(admin.ModelAdmin): pass # 对AdminSite进行子类化,并覆盖其属性 class ChipsAdmin(AdminSite): site_title = '薯条社区' site_header = '薯条社区后台管理系统' index_title = '薯条社区后台首页' chips_admin_site = ChipsAdmin(name='chips') # 通过AdminSite对象的register方法进行模型注册 chips_admin_site.register(Blog, BlogAdmin)
(2) 在urls.py中导出AdminSite的子类,重置路由
代码实例:
from django.urls import path,re_path from django.contrib.auth import views as auth_views from django.conf import settings from django.conf.urls.static import static import blog.views as blog # 导出AdminSite的子类chips_admin_site from blog.admin import chips_admin_site urlpatterns = [ # 重置后台的路由 path('chips_admin/', chips_admin_site.urls), path('', chipscoco.Home.as_view()), path('arithmetic/', chipscoco.arithmetic), path('html/', chipscoco.Html.as_view()), re_path('blog/(\d+).html', chipscoco.blog), ]
登录页的页面效果:
后台首页的页面效果:
(3) AdminSite对象的常用方法
方法名 | 说明 |
has_permission | 参数: (1)request: HttpRequest对象 描述: 返回布尔类型,判断用户是否有权限进行页面的浏览。request对象中会携带一个user参数,默认设置为:user.is_active和user.is_staff都为True时才有权限进行页面的浏览。 |
register | 参数: (1)model_or_iterable:表示模型的类型名或一个可迭代对象,当传递可迭代对象时,会对迭代出的模型进行注册 描述: 不能对抽象基类进行注册,当模型已注册时会抛出AlreadyRegistered的错误异常 |
对has_permission方法进行覆盖,只允许超级管理员浏览后台页面:
from django.contrib import admin # 导出AdminSite类 from django.contrib.admin import AdminSite # 从models.py中导出Blog from .models import Blog # 定义ModelAdmin的子类型 class BlogAdmin(admin.ModelAdmin): pass # 对AdminSite进行子类化,并覆盖其属性 class ChipsAdmin(AdminSite): site_title = '薯条社区' site_header = '薯条社区后台管理系统' index_title = '薯条社区后台首页' # 只允许超级管理员浏览后台页面 def has_permission(self, request): if request.user.is_superuser: return True else: return False chips_admin_site = ChipsAdmin(name='chips') # 通过AdminSite对象的register方法进行模型注册 chips_admin_site.register(Blog, BlogAdmin)
6.2.4 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: