10.15仿admin開發stark元件(一)
阿新 • • 發佈:2018-11-12
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 路飛學城