stark 组件 url 二级分发的实现

模拟 admin 组件url设计思路

项目urls 文件中:

from django.contrib import admin
from django.urls import path
from stark.service.sites import site

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
    path(‘stark/‘, site.urls),

]

1.路径设计格式:列表中放路径

1.第一级路径  :path ("stark/" , ([path1,path2,path3,......] ,None,None) )    或    path( “stark/”, urls1 )    #  urls1  可以是一个函数的返回值,该函数的返回值为元组,元组第一个

元素为一个列表,第二和第三个元素分别为None

@property

def urls(self):

  temp=[ ]

  for  model ,config_obj  in  self._registry.items():

    app_label = model._meta.app_label

    model_name =model._meta.model_name

    temp.append(

      path("%s/%s/".%(app_label,model_name), congfig.urls)

    )

  return temp, None,None

    

2.第二级路径 path1 :  path (" app_name/model_name" , ([ path1,path2,path3,........] ,None,None) )  或  path("%s/%s/".%(app_label,model_name), congfig.urls)

config.urls 该函数:

def  urls(self):

  temp=[

    path (" ", self.list_view),

    path("add" ,self.add_view),

    path("change",self.change_view),

    path("delete",self.delete_view)

  ]

  return temp,None,None

二. stark 组件中 sites文件中  urls 的设计  :

from django.urls import path,re_path
from django.shortcuts import HttpResponse,render,redirect

class ModelStark():

    def __init__(self,model):
        self.model = model

    def list_view(self,request):
        model_name = self.model._meta.model_name

        return render(request,"list_view.html",locals())

    def add_view(self,request):
        return HttpResponse("add_view")

    def change_view(self,request,id):
        return HttpResponse("change_view")
    def delete_view(self,request,id):
        return HttpResponse("delete_view")

    def get_urls(self):

        temp=[
            path(‘‘, self.list_view),
            path(‘add/‘, self.add_view),
            re_path(‘(\d+)/change/‘, self.change_view),
            re_path(‘(\d+)/delete/‘, self.delete_view),
        ]

        return temp

    @property
    def urls(self):
        return self.get_urls(),None,None

class StarkSite(): # 基础类,用于注册

    def __init__(self):

        self._registry={}  #用于注册模型类 ,以及配置模型类

    def register(self,model,Stark_class=None):

        Stark_class = Stark_class or ModelStark

        self._registry[model] = Stark_class(model)

    def get_urls(self):
        temp=[]
        for model,config_obj in self._registry.items():
            model_name = model._meta.model_name
            app_label = model._meta.app_label
            temp.append(
                path("%s/%s/"%(app_label,model_name),config_obj.urls)
            )
            # print(temp)

        return temp

    @property
    def urls(self):

        return self.get_urls(),None,None

#实例化一个单例对象
site = StarkSite()

原文地址:https://www.cnblogs.com/knighterrant/p/10294301.html

时间: 2024-07-30 06:10:51

stark 组件 url 二级分发的实现的相关文章

stark组件配置,二层URL

1.django的admin配置 2 stark组件开发 3.2层url分发 4.小结 1.django的admin配置 model.py from django.db import models # Create your models here. class UserInfo(models.Model): name=models.CharField(max_length=32) age=models.IntegerField() def __str__(self): return self.

crm 使用stark组件

# Create your models here. from django.db import models class Department(models.Model): """ 部门表 市场部 1000 销售 1001 """ title = models.CharField(verbose_name='部门名称', max_length=16) code = models.IntegerField(verbose_name='部门编号',

基于Django-admin实现stark组件

一.url的分发练习 from django.conf.urls import url from django.contrib import admin from django.shortcuts import  HttpResponse def index(request):     return HttpResponse("首页")           def add(request):                         #add视图函数     return Htt

python Stark 组件

Django Admin 是对model中 对应的数据表进行增删改查的组件,对每个APP下面已注册的model表进行增删改查.而stark组件仿照Admin组件开发. Admin的常用配置:  Filedstes 使用方法和效果如下图 Action 使用方法和效果图 需要在My_AppConfig(admin.ModeAdmin)中编写自定义函数 需要注意的:(1)该函数在select下拉框中 作为value值 (2)该函数有两个参数,分别是request.queryset (3)前端的复选框,

django-admin 仿写stark组件action,filter筛选过滤,search查询

写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染,所以StandLi这个类里面的方法如果你找不到就是在给前端传数据用的 tag.py 1 from django.conf.urls import url 2 from django.shortcuts import render, redirect, reverse 3 from django.ut

使用自己的stark组件实现crm系统

因为stark用到了templates里面的html页面文件,所以要整合在一个app里,在stark里面创建名字为templates的Python Package,将之前的html页面拷贝在stark组件里面的templates里面,然后拷贝stark组件 二.实现crm逻辑 CRM即客户关系管理,是指企业用CRM技术来管理与客户之间的关系 1.创建数据库 在app01应用下的models.py文件: from django.db import models class Department(m

Stark组件 (一)

Stark组件构建 1.启动所有app下的stark.py文件,的配置实现步骤 1.创建一个Django项目crm,并创建  app1 ,app2, stark 三个app 2.在crm 项目的settings中配置: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.

Django——stark组件

stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 stark APP专门用于存放自定义组件的核心代码. manage.py@stark_demo > startapp stark 在settings.py文件注册stark: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth'

CRM【第二篇】: stark组件

介绍: stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件.目标: 10s 中完成一张表的增删改查. 前戏: django项目启动时,自定义执行某个py文件. django启动时,且在读取项目中 路由加载 之前执行某个py文件. 在任意app的apps.py中的Config类中定义ready方法,并调用autodiscover_modules from django.apps import AppConfig from django.utils.module_loading im