django之admin管理工具
admin组件
admin是django提供的基于web的管理工具
>如何使用:
1、激活管理工具
通常会在生成项目时在urls.py中自动设置好
from django.urls import path,re_path
#from django.conf.urls import url
from django.contrib import admin urlpatterns =[
path('admin/', admin.site.urls),
# url(r"^admin/", admin.site.urls), 旧版本写法
]
2、创建用户
通过命令 python manage.py createsuperuser 来创建超级用户
然后在浏览器中访问127.0.0.1:8000/admin/ 就会出现登录界面。
3、注册数据模型到admin
from app01.models import Book #在admin中注册模型中的某个类,即可在admin中实现增删改查
#简单使用
admin.site.register(Book) #获得更多的定制操作,需要利用ModelAdmin进行配置
#定制用法
class BookConfig(admin.ModelAdmin):
list_display = ('title', 'price','publish') #定制展示哪些列的内容 admin.site.register(Book,BookConfig)
常用的定制功能示例
from django.contrib import admin # Register your models here. from app02.models import * class BookConfig(admin.ModelAdmin):
#定制展示那些列
def show_authors(self,obj):
print(obj.authors.all())
return "/".join([obj.name for obj in obj.authors.all()])
list_display = ('title','price','publishDate','publisher','show_authors')
#定制可以点击跳转的列
list_display_links = ['price']
#定制右侧快速筛选功能
list_filter=['publisher']
#定制搜索查询
search_fields = ['title','price']
#定制可以编辑的列
list_editable = ['title']
#定制htnl模板
# change_list_template = 'mylist.html' #按price排序 降序
ordering = ['-price'] #批量初始化
def path_init(self,request,queryset):
queryset.update(price=111)
path_init.short_description = '批量修改价格为111' #对actiond的描述,可以不写
actions = [path_init,] admin.site.register(Book,BookConfig)
admin.site.register(Author)
admin.site.register(Publish)
admin.py
admin工作过程
1、加载所有app下的admin.py文件
2、在admin中注册模型类
3、基于二级分发设计url路由
admin的url配置
from django.contrib import admin
from django.urls import path,re_path from django.shortcuts import HttpResponse def test01(request):
return HttpResponse('test01....')
def test02(request):
return HttpResponse('test02...')
def test03(request):
return HttpResponse('test03...')
def test04(request):
return HttpResponse('test04...')
def test05(request):
return HttpResponse('test05...') def list_view(request):
return HttpResponse('查询') def add_view(request):
return HttpResponse("添加") def change_view(request,id):
return HttpResponse('修改') def delete_view(request,id):
return HttpResponse('删除') def get_urls2():
temp=[
path('',list_view),
path('add/',add_view),
re_path('(\d+)/change/',change_view),
re_path('(\d+)/delete/',delete_view),
]
return temp def get_urls():
print('----->',admin.site._registry) #{Book:BookConfig,....}
temp = []
for model,config_obj in admin.site._registry.items():
model_name = model._meta.model_name
app_label = model._meta.app_label
temp.append(
path("%s/%s/"%(app_label,model_name),(get_urls2(),None,None)),
)
return temp urlpatterns = [
path('admin/', admin.site.urls), #一级分发
# path('index/',([
# path('test01/',test01),
# path('test02/',test02),
# ],None,None)),
# #二级分发
path('index/',([
path('name/',([
path('alex/',test03),
path('egon/',test04)
],None,None)),
path('shop/',([path('apple/',test05)],None,None)),
],None,None)), #二级分发的应用
path('yuan/',(get_urls(),None,None)), ]
二级分发url
补充知识点:
>实现单例模式的方式
1、使用__new__
2、使用装饰器(decorator)
3、使用元类(metaclass)
4、基于模块实现单例
>通过模型类对象获取类名和应用名(字符串)
Book._meta.model_name ----->'book'
Book._meta.app_label-------->'app01'
django之admin管理工具的更多相关文章
- Django 之 admin管理工具
-------------------------------------------------------------------------妄尝恶果,苦果自来. admin组件使用 Django ...
- Django的 admin管理工具
admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...
- Django框架 之 admin管理工具(组件使用)
Django框架 之 admin管理工具(组件使用) 浏览目录 激活管理工具 使用管理工具 admin的定制 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理 ...
- 10.5Djang admin 管理工具
2018-10-5 17:30:57 Django admin 管理工具 参考连接: https://www.cnblogs.com/yuanchenqi/articles/8323452.html ...
- 自定义admin管理工具(stark组件)
自定义admin管理工具(stark组件) 创建项目 了解了admin的功能后,我们可以开始仿照admin编写我们自己的管理工具stark组件 首先创建一个新的项目,并创建三个app stark就是我 ...
- Django admin 管理工具
admin 组件的使用 Django 提供了基于 web 的管理工具.Django 自动管理工具是 django.contrib 的一部分. INSTALLED_APPS = [ 'django.co ...
- Django——admin管理工具
一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...
- Django 测试开发3 数据模型models和admin管理工具
参考:https://blog.csdn.net/weixin_44510615/article/details/89425412 1.Django模型字段常用类型: IntegerField : 整 ...
- 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具
Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...
随机推荐
- asp.net mvc 简单实现一个账号只能在一个地方登录
原理: 假设用户在机器A登陆后, 这时用户再次在机器B登陆,会以当前会话的SessionID作为键,用户id作为值,插入dictionary集合中,集合再保存在application(保存在服务器 ...
- linux出现tmp空间满的情况解决
cd命令tab补全的时候报错: cd /ro-bash: cannot create temp file for here-document: No space left on device-bash ...
- 【论文阅读】Deep Adversarial Subspace Clustering
导读: 本文为CVPR2018论文<Deep Adversarial Subspace Clustering>的阅读总结.目的是做聚类,方法是DASC=DSC(Deep Subspace ...
- python基础(4)-元组&字典&字符串&队列
元组(tuple) #元组相对列表来说不同之处是只读不可写 读操作和列表一致 letter_tuple = ('a','b','c','d'); print(letter_tuple[0]);#res ...
- python框架之Flask(2)-路由和视图&Session
路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 # 示例代码 from flask import Fla ...
- 家庭记账本之微信小程序(六)
Wxss的学习 WXSS(WeiXin Style Sheets)是一套样式语言,用于描述WXML的组件样式. WXSS用来决定WXML的组件应该怎么显示. 为了适应广大的前端开发者,我们的WXSS具 ...
- Cocos Creator cc.Event点击触摸事件详解
cc.Event事件请不要直接创建 cc.Event 对象,因为它是一个抽象类,请创建 cc.Event.EventCustom 对象来进行派发. cc.Class({extends: cc.Comp ...
- sparse-table模板
预处理: void init(int n) { ;i < n;i++) { dp[i][] = a[i]; } int bitn = (int)(log(n)/log(2.0)); ;j < ...
- STM32的型号的命名规则
每种STM32的产品都由16个字母或数字构成的编号标示,用户向ST订货时必须使用这个编号指定需要的产品.这16个字符分为8个部分,下面通过一个例子说明它们的意义: STM32 F C T xxx ST ...
- [openjudge-搜索]单词接龙
题目描述 描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙&q ...