深浅赋值+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分布式爬虫-从基础到实战]

相关内容

热门资讯

模仿黄仁勋走红后,“我现在很害... 5月,英伟达CEO黄仁勋在华访问期间,身着他标志性的皮衣,一头扎入北京的“烟火气”之中。他在街头大口...
原创 北... 5月29日,北方华创宣布,其首台600mm×600mm面板级封装去胶设备(Descum)成功出厂,标...
燃气灶开关丢了怎么修复 燃气灶的开关是长期使用后容易出现丢失或损坏的情况。如果你的燃气灶开关丢了,该如何修复呢?下面提供几种...
成都阳光明珠家具怎么样 最佳回答 成都阳光明珠家具属于国内的二线家具品牌。在产品的质量以及销售量上是没有办法跟全友家私,宜家...
修理洗手盆脱落多少钱 修理洗手盆脱落的费用可能会因多种因素而有所不同,以下是一些可能影响价格的因素:1. 损坏程度:洗手盆...
湖北一地回应“农机手抢收夏粮收... 澎湃新闻记者 钟煜豪5月30日,湖北天门市汪场镇人民政府就网络反映的“广西农机手抢收夏粮收割机爬梯被...
洗衣机黑屏修理多少钱 洗衣机黑屏是一种常见的故障。造成这种问题的原因可能有很多,例如故障的电源线,中断的电源等等。 如果...
兴国上门维修燃气灶价格 现今社会,人们对家居生活的需求越来越高,因此家电维修服务行业也得到了蓬勃发展,尤其是燃气灶维修方面更...
供应商变股东:存储芯片三巨头联... 美光、三星、SK海力士历史上首次联合出现在同一家AI公司的融资名单。 当地时间5月28日,Anthr...
美防长:将扩充美在“印太”核潜... 澎湃新闻记者 南博一据央视新闻报道,当地时间30日,在香格里拉对话会第一次全体会议中,美国国防部长赫...