深浅赋值+orm操作+Django-admin简单配置
admin
2023-06-27 23:03:54
0次

知识点
深浅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本质上是一个懒加载的对象,作用是进行表级操作,返回结果集(一张视图:类型值, ]>或一条记录:类型值Person object (1)),当结果集是视图时可链式调用。, ]>
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

[学习python分布式爬虫-从基础到实战]

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...