10.15仿admin开发stark组件(一)
2018-10-15 12:28:50
越努力,越幸运!永远不要高估自己!
低调做人,高调做事!
明天开stark项目!!
admin 参考连接: http://www.cnblogs.com/yuanchenqi/articles/8323452.html

admin里面的一些配置
admin.py
from django.contrib import admin from .models import * # 带*的是必回的,其他了解,重点的注意 list_filter
class BookConfig(admin.ModelAdmin):
list_display=["id","user","room","date","time_id"] # 不能放多对多字段 *
list_display_links=["user"] # *
list_filter=["user","room","date"] # *
list_editable=["room"] # 不能和list_display_links 重复 #date_hierarchy = "date"
#fields=["user","room"]
#exclude=["user","room"] ordering=["date","time_id"] # 排序 # 定制Action行为具体方法 *
def func(self, request, queryset): print(self, request, queryset)
queryset.update(date="2012-12-12") func.short_description = "批量初始化操作"
actions = [func, ] class UserConfig(admin.ModelAdmin):
list_display = ["username","tel"]
list_filter = ["gf","username"]
search_fields=["username","tel"] admin.site.register(Book,BookConfig) #print(admin.site._registry) admin.site.register(UserInfo,UserConfig)
admin.site.register(Room)
admin.site.register(GF)
仿照admin的url注册:
就是一级分发到二级分发,然后返回一个([], None, None)
贴上源码
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
from django.shortcuts import HttpResponse def yuan(request): return HttpResponse("Yuan") 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 add(request):
return HttpResponse("add")
def delete(request,id):
return HttpResponse("delete")
def change(request,id):
return HttpResponse("change")
def list_view(request):
return HttpResponse("list_view") def get_urls2(): temp=[]
temp.append(url(r"^add/",add))
temp.append(url(r"^(\d+)/delete/",delete))
temp.append(url(r"^(\d+)/change/",change))
temp.append(url(r"^$",list_view))
return temp def get_urls(): temp=[]
print("_registry",admin.site._registry) for model,admin_class_obj in admin.site._registry.items():
print("model",model) # 所有的注册模型表 # < class 'app01.models.Book'>-----> "book" "app01"
# < class 'app01.models.Room'>-----> "room" "app01"
# print("===>",model._meta.model_name)
# print("===>",model._meta.app_label)
model_name=model._meta.model_name
app_label=model._meta.app_label
temp.append(url(r"%s/%s/"%(app_label,model_name),(get_urls2(),None,None))) return temp urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^login/', views.login),
url(r'^book/', views.book), url(r"^yuan/",(get_urls(),None,None)) ]
笔记
day87 权限
会议室预定
admin与stark 复习面向对象知识 crm admin 使用 知识点1: url()的使用 情况1:url(r'^book/', views.book), # book(request) 情况2 分发:
url(r"^yuan/", ([
url(r'^test01/', ([
url(r'^test04/', test04),
url(r'^test05/', test05),
], None, None)),
url(r'^test02/', test02),
url(r'^test03/', test03),
], None, None)
) 知识点2: 单例模式
生成单例模式的方式:
(1)使用 __new__
(2)使用模块
class A()
pass
a=A() admin源码: 1 注册 admin.py admin.site.register(Book,BookConfig) 源码: class AdminSite():
def __init__(self, name='admin'):
self._registry = {} def register(self,model,admin_class):
if not admin_class:
admin_class = ModelAdmin self._registry[model] = admin_class(model, self) site=AdminSite() 2 设计url 如何通过model类变量获取该模型的字符串名称和该模型所在app的字符串名称:
print("===>", model._meta.model_name)
print("===>", model._meta.app_label)
################################################################### def add(request):
return HttpResponse("add")
def delete(request,id):
return HttpResponse("delete")
def change(request,id):
return HttpResponse("change")
def list_view(request):
return HttpResponse("list_view") def get_urls2(): temp=[]
temp.append(url(r"^add/",add))
temp.append(url(r"^(\d+)/delete/",delete))
temp.append(url(r"^(\d+)/change/",change))
temp.append(url(r"^$",list_view))
return temp def get_urls(): temp=[]
print("_registry",admin.site._registry) for model,admin_class_obj in admin.site._registry.items():
print("model",model) # 所有的注册模型表 # < class 'app01.models.Book'>-----> "book" "app01"
# < class 'app01.models.Room'>-----> "room" "app01"
# print("===>",model._meta.model_name)
# print("===>",model._meta.app_label) model_name=model._meta.model_name
app_label=model._meta.app_label
temp.append(url(r"%s/%s/"%(app_label,model_name),(get_urls2(),None,None))) return temp urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^login/', views.login),
url(r'^book/', views.book), url(r"^yuan/",(get_urls(),None,None)) ] restful
vue
路飞学城
10.15仿admin开发stark组件(一)的更多相关文章
- 10.18正式开发stark组件*(三)
2018-10-18 19:15:54 等这个stark组件做完了再上传到github上面,然后再整理博客!这就到周末啦! 因为models导入的时候出现bug,所以只有源码没有测试数据! 源码都有注 ...
- 10.16 正式开发stark组件(一)
2018-10-16 17:26:44 Django MTV 路由配置里面有 反向解析 参考连接:https://www.cnblogs.com/yuanchenqi/articles/762993 ...
- admin源码解析以及仿照admin设计stark组件
---恢复内容开始--- admin源码解析 一 启动:每个APP下的apps.py文件中. 首先执行每个APP下的admin.py 文件. def autodiscover(): autodisco ...
- 模拟Django的admin自定义stark组件
1.新建Django项目--新建app:app01和stark--在settings中配置app和数据库--在models.py中新建模型表--完成数据库迁移 2.在stark下的apps.py中: ...
- 模拟admin组件自己开发stark组件之自定义list_display,反向解析url
反向解析 在上一篇文章中,我们创建好了stark这个组件,一个应用一个表有四个默认的url,那么我们如何区别这些url,因为可能会有重复现象(本组件不会,因为前面拼接了应用名,表明,肯定唯一),概念请 ...
- 模拟admin组件自己开发stark组件之创建篇
admin组件 admin组件为我们提供了针对django管理页面 我们先简短来看下django的admin组件的启动流程,注册流程,url匹配过程 启动注册 1. 扫描所有应用下的注册了应用中的ad ...
- 模拟admin组件自己开发stark组件之搜索和批量操作
搜索相关,搜索的本质就是从数据库查询出来的数据过滤 用户自定义给出过滤条件joker.py list_display = ('id','title','price',) show_add_btn = ...
- 模拟admin组件自己开发stark组件之增删改查
增删改查,针对视图 我们需要modelform来创建,可自动生成标签,我们还要考虑用户是不是自己定制,依然解决方法是,继承和重写 app01下的joker.py文件 class BookModelFo ...
- 关于模拟admin实现stark组件的知识点
一. url知识 还记得include分发么?里面的参数都可以有些什么? urlconf_module本质是返回的是模块路径对象 def include(arg, namespace=None, ap ...
随机推荐
- Js实现页面关键字高亮显示
<!DOCTYPE HTML> <html lang="en"> <meta http-equiv="Content-Type" ...
- 版本控制-GitHub
前面几篇文章,我们介绍了Git的基本用法及Git服务器的搭建,本篇文章来学习一下如何使用GitHub.GitHub是开源的代码库以及版本控制库,是目前使用网络上使用最为广泛的服务,GitHub可以托管 ...
- 【T08】避免重新编写TCP
1.有时候为了所谓的性能,我们倾向于使用udp,但是我们又期望数据的传输是可靠的,因此需要在应用层提供可靠性. 2.可靠.健壮的udp必须提供: a.在合理的时间内没有收到回复,进行重传 b.保证应答 ...
- sqlite3命令行查看中文乱码问题解决
SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.我们通过程序创建的数据库一般位于/data/data/程序db设置的content类 ...
- MySQL在默认事务下各SQL语句使用的锁分析
数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性.InnoDB是一个支持行锁的存储引擎,锁的类型有:共享锁(S).排他锁(X).意向共享(IS).意向排他(IX).为了提供更好的并发,Inn ...
- mysql复制过程中的server-id的理解
一. server-id做什么用的,你知道吗? 1. mysql的同步的数据中是包含server-id的,用于标识该语句最初是从哪个server写入的,所以server-id一定要有的 2. ...
- [剑指Offer]5.二维数组中的查找
题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...
- C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...
- Pitch detection algorithm(基音搜索算法)PDA相关链接
第一:维基百科 http://en.wikipedia.org/wiki/Pitch_estimation 简要系统介绍了基音估计算法的分类和一些链接,论文 第二:http://ws2.bingham ...
- 【iCore4 双核心板_FPGA】例程五:基础逻辑门实验——逻辑门使用
实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //--------------------module_logic_g ...