Admin执行步骤

启动文件:
1:创建app-----stark
2:在每个app中创建stark
3:django----admin----
4:在stark中写入:----------------------------------去以注册的所有的app中,找到stark.py文件并加载
from django.apps import AppConfig
class StarkConfing(AppConfig):
name = 'stark'
def ready(self):
from django.utils.module_loading import autodiscover_modules
autodiscover_modules('stark')
5:在settings中注册app:
路由系统:
一:运行程序,找到每个app下的admin.py执行并加载
1:--app01.admin.py
2:-创建admin.site中的对象---------------site下的----site = AdminSite()-----本质实例化一个对象
3:-执行对象的register方法---------------目的将注册类添加到_register中
4:--app02.admin.py
5:-用app01.admin.py创建的admin.site对象----site下的----site = AdminSite()----单例----以后不管谁来调用都使用这个对象。
admin.site是一个对象(单例模式创建),其中封装了_register
二:执行urls.py
1:--url(r'^admin/',admin.site.urls)----再次调用admin.site的urls属性
--admin.site.urls-----admin.site调用urls方法----(没加括号:在上面加@property,不加括号也能执行)
2:返回了一个元组,元组有三个元素------self.get_urls()----'admin'-----self.name
--@property
def urls(self):
return self.get_urls(), 'admin', self.name
--第一个是一个函数------self.get_urls()
--第一个函数返回的是一个列表-------列表中是url-------从某个地方读出来,放在列表中。
urlpatterns = [
url(r'^$', wrap(self.index), name='index'),
url(r'^login/$', self.login, name='login'),
url(r'^logout/$', wrap(self.logout), name='logout'),
url(r'^password_change/$', wrap(self.password_change, cacheable=True), name='password_change'),
url(r'^password_change/done/$', wrap(self.password_change_done, cacheable=True),
name='password_change_done'),
url(r'^jsi18n/$', wrap(self.i18n_javascript, cacheable=True), name='jsi18n'),
url(r'^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$', wrap(contenttype_views.shortcut),
name='view_on_site'),
]
----([],None,None)
3:去admin.site中读出类,生成url,放在列表中。
--循环admin.site中的_register--------(里面放的注册类)
for k,v in admin.site._register.items():------k是类名--------v---model_admin的对象
--找到类的名称,将k命名为model_class---(model中的类)
for model_class,v in admin.site._register.items():
类名clas_list = model_class._meta.model_name--------------获取当前类名
--找到app名称
app名称app_name = model_class._meta.app_lable-------------获取当前类所在的app名称
--生成url
ual = url(r''{0}/{1}.format(app_name,clas_list),函数名,name='函数名')---------/.头../app名称.../类名称..../
--添加到列表
url_list = []
url.append(ual)
--每个类的增,删,改,查,分别对应一个函数。
---admin.site.urls---返回一个元组(self.get_urls,None,None)----get_urls返回一个列表[uels]
路由include:---------通过反射找到模块-----------找到parent-------url
1:定义一个函数-----定义一个列表-----生成四个url(增删查改)-----返回
def get_urls()
temp= [
url(r'^$'.format(app_name,cls_name),chagelest_view),
url(r'^add/$'.format(app_name,cls_name),add_view),
url(r'^(\d+)del/$'.format(app_name,cls_name),del_view),
url(r'^(\d+)change/$'.format(app_name,cls_name),change_view),
]
return temp
--循环admin.site中的_register--------(里面放的注册类)
for k,v in admin.site._register.items():------k是类名
--找到类的名称,将k命名为model_class---(model中的类)
for model_class,v in admin.site._register.items():
类名clas_list = model_class._meta.model_name--------------获取当前类名
--找到app名称
app名称app_name = model_class._meta.app_lable-------------获取当前类所在的app名称
--生成url,再添加一个元组----第一个元素是get_urls[],第二和第三个为None.
ual = url(r'{0}/{1}/.format(app_name,clas_list)',include(get_urls,None,None))---------/.头../app名称.../类名称..../增删查改/
--添加到列表
url_list = []
url.append(ual)

Django----Admin流程的更多相关文章

  1. django之admin流程

    admin 类复习: class Base(object): def __init__(self,val): self.val = val def func(self): self.test() pr ...

  2. Django admin 组件 原理分析与扩展使用 之 sites.py (一)

    一 . 前言 Django 提供了admin 组件 为项目提供基本的管理后台功能(对数据表的增删改查). 本篇文章通过 admin源码 简单分析admin 内部原理 ,扩展使用方式,为以后进行定制和自 ...

  3. django的流程和命令行工具

    django实现流程django #安装: pip3 install django 添加环境变量 #1 创建project django-admin startproject mysite ---my ...

  4. Django Xadmin - 重构django admin

    一.Django admin的执行流程 https://www.cnblogs.com/weihengblog/p/9122509.html 我的博客,介绍了django admin执行流程 二.Xa ...

  5. 4-初识Django Admin

    初识Django Admin Django Admin是Django为我们提供的网站后台管理应用,通常网站,个人博客,CMS等都会有个后台管理界面,这个界面只有管理员权限的用户才能进入管理网站内容.管 ...

  6. Django admin美化插件suit应用[原创]

    前言 由于比较懒,自己弄了一个用户验证,没有自己写后台,用了django自带的user认证,并通过admin直接进行管理,但默认的admin并不漂亮,于是使用了这个django-suit插件,效果对比 ...

  7. Django admin 权威指南(一)

    版本: Django 1.10 此部分由官方文档<6.5.1 The Django admin site>翻译而来. 6.5.1.1 概览 默认情况下,使用startproject的时候, ...

  8. Django admin 显示图片

    我有一个表用来储存轮播图片,有一个 `picture` 字段储存的是图片的url,图片的 url 通过上传文件到 cdn 获得.目前这个表的编辑是通过自定义一个 `ModelForm`,然后重写 Dj ...

  9. [系统开发] Django Admin上传图片简单校验

    我的 models里有个ImageField字段,用来保存用户头像,希望通过Django Admin上传时校验头像大小,如果太大就报错,并且不保存. 网上有不少方法,有的通过第三方软件实现,有的通过自 ...

  10. SQLAlchemy连接数据库并在django admin显示

    SQLAlchemy 0.7     postgersql  9.0 SQLAlchemy连接数据库有两种方法,一种是classic,一种是modern 1,modern方法 from sqlalch ...

随机推荐

  1. RPC框架-hessian学习

    先说说hessian有什么优点和缺点 一.优点: 比 Java 原生的对象序列化/反序列化速度更快, 序列化出来以后的数据更小.序列化协议跟应用层协议无关, 可以将 Hessian 序列化以后的数据放 ...

  2. python实现模拟登录

    本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程.   当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ...

  3. 【Windows】Dos中的日期的和时间

    在Dos中,我们可以通过动态变量DATE来取得当前日期,通过动态变量TIME来取得当前日期.实例1 C:\Users\hubin5>echo %date% 2013/03/11 周一 C:\Us ...

  4. springboot 中打印 sql 语句

    在配置文件中 application.yml 配置如下其一即可 方式一: logging: level: com.xxx.com.dao.mapper: DEBUG //包路径为mapper文件包路径 ...

  5. Java代码里利用Fiddler抓包调试设置

    Fiddler启动时已经将自己注册为系统的默认代理服务器,应用程序在访问网络时会去获取系统的默认代理,如果需要捕获java访问网络时的数据,只需要在启动java程序时设置代理服务器为Fiddler即可 ...

  6. lua -- 所有UI组件的基类

    -- 组件行为基础 local Behavior = class("Behavior"); function Behavior:ctor(name) self.owner = ni ...

  7. 【iCore4 双核心板_ARM】例程九:ADC实验——电源监控

    实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过电阻分压或者直接 接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F 输入到ADC的输入通道 ...

  8. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-13 emWin底层驱动接口介绍

    视频简介:该视频介绍emWin底层驱动接口. 源视频包下载地址:链接:http://pan.baidu.com/s/1nvPpC2d 密码:cbb7 银杏科技优酷视频发布区:http://i.youk ...

  9. 自定义progressdialog,改善用户体验

    自定义progressdialog,改善用户体验

  10. Java知多少(104)网络编程之统一资源定位符URL

    统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <M ...