知识点
深浅copy
浅值深id
orm操作
ManyToManyField 虚拟字段
告诉Django orm 自动帮你创建第三张表
查询的时候可以借助该字段跨表
外键属性可赋值外联对象
Model.object下13个必会操作
返回QuerySet对象的方法有
all()
filter()
exclude()
order_by()
reverse()
distinct()
特殊的QuerySet
values() 返回一个可迭代的字典序列
values_list() 返回一个可迭代的元祖序列
返回具体对象的
get()
first()
last()
返回布尔值的方法有:
exists()
返回数字的方法有
count()
外键操作
add
remove
set
上面三个可以传一个或多个参数(可迭代数据类型) 并且即可以是数字也可以是对象
clear
不传参数 直接清空
以上方法使用时会清空缓存,所以不需要再用save()。
跨表查询
基于对象的跨表查询 (都是子查询),‘.’连接
基于对象的反向查询 除了一对一直接点表名小写就可以拿到关联对象
一对多个多对多反向都必须 表名小写_set
基于双下划线的跨表查询 (都是联表查询)
关键是:正向字段反向表名小写
正-反向查询
外键正向,按外键字段
被外键反向,按表名小写 8|0Django终端打印SQL语句 if __name__ == '__main__':
作为脚本执行时内容
else:
作为模块时内容 查询集
Django中的QuerySet本质上是一个懒加载的对象,作用是进行表级操作,返回结果集(一张视图:类型<class 'django.db.models.query.QuerySet'>值<QuerySet [<Person: Person object (1)>, <Person: Person object (2)>]>或一条记录:类型<class 'TestModels.models.Person'>值Person object (1)),当结果集是视图时可链式调用。<QuerySet [<Person: Person object (1)>, <Person: Person object (2)>]>
URL路由反向解析---后台反向解析
django.urls.reverse(name,args) 只有理解并记住的才能算是自己的。才是对未来学习内容做减法。越接近本质、简洁模型,越利于理解、记忆。学习、运用、减负效果越好。
10m对人陨石 100m对地区 1km对洲 10km 对行星陨石 settings源码
算法
总结:manage.py 中设置'DJANGO_SETTINGS_MODULE'缺省值为'untitled.settings'模块字符串,再利用上述方法读取全局设置'global_settings'为字典再向字典中写入用户设置(有优点:利用了键的再赋值实现了用户设置高优先级,和用户设置参数的可扩展性)
'DJANGO_SETTINGS_MODULE'='untitled.settings'
'DJANGO_SETTINGS_MODULE'+'global_settings'->'ENVIRONMENT_VARIABLE'
第三方存储(如os.environ)暴露给用户的设置文件模块导入名,构造一个类来存储设置键值对,导入两个设置模块(用户设置文件要先从第三方读取模块名再利用importlib模块导入),依次利用getattr()、setattr()将两个设置模块的名称空间内键值对写入该类
知识点
importlib模块
利用importlib可以导入‘模块名字符串’代表的模块
os与sys
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。
项目测试启动文件
/xxx.py
import os
import sys
BASE_DIR=os.path.dirname(__file__)
sys.path.append(BASE_DIR)
···
from importlib模块
getattr(名称空间(模块名))、setattr(object,name,value) admin文件用户配置
配置类,继承admin.ModelAdmin类
五大配置参数
list_display 控制展示字段 注意不能放多对多字段
list_display_links 控制链接展示字段 注意不能放多对多字段
search_fields 多字段检索 注意不能放多对多字段
list_filter 筛选列表 多用于放外键字段
class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish_date','publish']
list_display_links = ['title','price']
search_fields = ['title','price']
list_filter = ['publish','authors']
def patch_init(self,request,queryset):#固定参数
queryset.update(price=666)#2.queryset选择集操作方法逻辑
patch_init.short_description = '价格批量修改'#3.方法简称
actions = [patch_init]#1.actions操作框批量处理函数方法列
admin.site.register(models.Book,BookConfig) admin运行逻辑
1.admin启动源码
django在启动的时候会依次执行每一个应用下的admin.py文件
manage.py->settings.py~~~'django.contrib.admin'->autodiscover_modules('admin',register_to=site)->AdminSiteClass=import_string(apps.get_app_config('admin').default_site)
单例模式
2.注册源码
admin.py注册语句
admin.site.register(models.Publish) # 仅仅是将注册了的模型表和以模型表为参数实例化产生的对象
# 当做键值对存入了site对象中的_registry字段
3.URL
admin会给每一个注册了的表生成增删改查四条url
路由分发的本质
路由:url('',func,None,None) 可迭代 路由分发的本质为视图函数替换为路由数列,多级为视图函数替换为标准路由分发组
 个性化后台管理应用设计与实现
stark(自定义后台管理应用应用名)
启动 通过stark读取其他应用中的stark.py
令django一启动就要执行每一个应用下的stark.py文件#该文件如果被用户在应用下创建,替代应用下的admin.py文件
算法:
配置文件中注册:
INSTALLED_APPS = [
'stark.apps.StarkConfig',
]
app配置模块apps.py 添加:
def ready(self):#函数重写
from django.utils.module_loading import autodiscover_modules
return autodiscover_modules('stark')
注册 在其他应用admin.py和urls.py中替代django.contrib.admin.site使用
应用下创建stark.py
快复制Django默认admin配置 django.contrib.admin.sites和django.contrib.admin.ModelAdmin中的内容,根据需要重写方法
算法:
site=管理站点类(admin中是AdminSite()),
管理站点类中需要用到模型管理类(admin中是django.contrib.admin.ModelAdmin),这两个类中的诸般方法根据用户需要重写
1.二级路由分发
为了实现二级路由生成,一级路由写在管理站点类,二级路有写在模型管理类,因为:
class ModelStark(object):
list_display = ['__str__',]
def __init__(self,model):
self.model = model
2.

深浅赋值+orm操作+Django-admin简单配置的更多相关文章

  1. Django Admin 简单部署上线

    前言 打算为公司弄一个管理公用密码的平台,由于比较懒,就选择使用Django admin,默认的admin并不漂亮,于是我使用了这个django-suit插件来美化 如图: 是不是比原来的漂亮多了. ...

  2. Django admin参数配置

    admin参数配置 一. admin 启动 admin: Django的后台数据管理的web版本 针对Food表,url: http://127.0.0.1:8000/admin/app02/food ...

  3. 如何给django admin.py配置超级管理员?注册表格?

    admin.py是django给我们提供的功能非常强大的后台,况且支持拓展,,如果你要是觉得admin的后台不够牛逼你可以自己写一个!如何自己写一个后台,后面我有时间了会给大家更新!一起学习!一起进步 ...

  4. django admin site配置(二)

    1. ModelAdmin.inlines 将有外键的子类包含进视图 ,实例: class Author(models.Model): name = models.CharField(max_leng ...

  5. Django admin简单介绍

    生成同步数据库的脚本: python manage.py makemigrations 同步数据库: python manage.py migrate 创建后台用户 python manage.py ...

  6. 【Django admin 中文配置】

    打开settings.py文件,找到语言编码.时区的设置项,将内容改为如下: [其中 zh-Hans是简体中文 zh-Hant是繁体中文] LANGUAGE_CODE = 'zh-Hans' # LA ...

  7. 01: 重写Django admin

    目录: 1.1 重写Django admin项目各文件作用# 1.2 重写Django admin用户认证 1.3 将要显示的表注册到我们自己的kind_admin.py中 1.4 项目首页:显示注册 ...

  8. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  9. WEB框架Django之ORM操作

    一 ORM的简介 MVC或者MVC框架中包括的一个重要部分就是ORM,它实现了数据模型与数据库的解耦. 即数据模型的设计不需要依赖于特定的数据库,通过简单的配置可以轻松更换数据库,这可以大大减少开发人 ...

随机推荐

  1. 非main goroutine的退出及调度循环(15)

    本文是<Go语言调度器源代码情景分析>系列的第15篇,也是第二章的第5小节. 上一节我们说过main goroutine退出时会直接执行exit系统调用退出整个进程,而非main goro ...

  2. react知识点

    http://www.cocoachina.com/webapp/20150721/12692.html http://blog.csdn.net/slandove/article/details/5 ...

  3. 解决Error: ENOENT: no such file or directory, scandir 'xxx\node-sass\vendor'

      解决方案是执行以下方法: npm rebuild node-sass

  4. 《2019面向对象程序设计(java)课程学习进度条

    周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序 阅读或编译让我 第一周 20/5 1/0 4 编译九九乘法表 第二周 100/10 2/0 5 第 ...

  5. 201871010134-周英杰《面向对象程序设计(java)》第六到七周学习总结

    201871010134-周英杰<面向对象程序设计(java)>第六到七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  6. day29 8_8 TCP上传文件socketserver的应用

    一.文件上传 对于一些比较大的文件,当传输的数据大于内存时,显然,一次性将数据读取到内存中,在从内存传输到服务器显然时不可取的. 所以,在上传文件时,可以在with open打开文件,边读取文件边发送 ...

  7. 集合(List、Set、Map)

    一.集合与数组 数组:长度固定,数组元素可以是基本类型,也可以是对象.不适合在对象数量未知的情况下使用. 集合:(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. Java集合类存放 ...

  8. SSH使用ProxyCommand通过代理服务器远程连接其他服务器

    当前环境拓扑图:   用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程 ...

  9. Npcap环境配置(Winpcap后继者) pcap的一种

    Npcap是基于Winpcap和Libpcap的,Winpcap已多年无人维护,其官网也推荐Windows XP之后的用户转移到Npcap上.Npcap基于WINPCAP,Winpcap基于libpc ...

  10. EPPlus.Core 处理 Excel 报错之天坑 WPS

    最近工作中常常有有数据处理的需求,一个Excel动不动就是上十万的数据量,在用 EPPlus.Core 导入数据入库的时候遇到了一个莫名其妙的问题 The given key 'rId2' was n ...