博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django基于admin的stark组件创建(一)
阅读量:5152 次
发布时间:2019-06-13

本文共 2391 字,大约阅读时间需要 7 分钟。

首先创建一个名为stark_test的Django项目,创建2个app一个名为app01用来测试stark组件,一个就叫做stark,用来放stark组件

如图:

 我们这里使用的是Django自带的数据库,因为没什么影响,如果你想使用其他数据库也是一样的。

创建好项目后,就要思考一下,你想想Django项目app里面有个admin.py文件每次你启动的时候都会自动执行这个文件。所以我们也要创建一个类似的文件,我们创建名字为stark.py ,然后就要添加让其自动执行这个文件的方法了。

我们通过进去admin里面可以发现是这里面的代码使其能够自动执行admin.py .如图:

我们也可以在stark里面的apps.py 里面添加以下代码用来实现其功能

from django.apps import AppConfig# 导入模块from django.utils.module_loading import autodiscover_modulesclass StarkConfig(AppConfig):    name = 'stark'    # 启动Django时如果有ready方法会执行里面的代码    def ready(self):        autodiscover_modules('stark') # stark为要执行的py文件。

然后我们测试一下是否能自动执行。我们在app01下创建一个stark.py 文件在里面添加print("stark run!!!"),然后启动项目。发现能在启动时打印出stark run!!!了。如图:

然后我们就可以仿照admin源码进行编写我们的stark代码了。

首先在stark目录下创建一个名为services的python包。在里面创建一个stark.py文件。:

我们要在这里面编写仿照admin的代码():

# 默认的样式。这里没怎么完善的class ModelStark(object):    def __init__(self, model, site):        self.model = model        self.site = site# 自己编写一个类。仿照admin的结构class StarkSite(object):    def __init__(self):        self._registry = {}    def register(self, model, stark_class=None):        # 判断是否有自定义的样式        if not stark_class:            stark_class = ModelStark        self._registry[model] = stark_class(model, self)# 形成单例模式(模块的单例模式)site = StarkSite()

写完这里后,就要注册一下了。但是注册前要创建数据表用来测试。在app01的models.py里面创建一个表用来测

from django.db import models# Create your models here.class UserInfo(models.Model):    name = models.CharField(max_length=32)    age = models.IntegerField()

然后进行makemigrations和migrate。生成表。

然后就进行注册了。没使用的注册:

# -*- coding: utf-8 -*-# @Time    : 2019/4/11 下午 9:52# @Author  : lh# @Email   : 2470937072@qq.com# @File    : stark.py# @Software: PyCharmfrom stark.service.stark import site, ModelStarkfrom .models import *# # 自己定义样式不使用ModelStark的自带样式# class UserInfoConfig(ModelStark):#     pass# 就像注册admin那样注册表进site里面# site.register(UserInfo, UserInfoConfig)site.register(UserInfo)print(site._registry)

我们先看看没有使用stark的效果。

把表注册进去。在app01的stark.py 里面编写:

# -*- coding: utf-8 -*-# @Time    : 2019/4/11 下午 9:52# @Author  : lh# @Email   : 2@qq.com# @File    : stark.py# @Software: PyCharmfrom stark.service.stark import site, ModelStarkfrom .models import *# 自己定义样式不使用ModelStark的自带样式class UserInfoConfig(ModelStark):    pass# 就像注册admin那样注册表进site里面site.register(UserInfo, UserInfoConfig)print(site._registry)

然后重启项目你会发现使用的是自己定义的样式:

这就是最基础的stark搭建了。功能后面再完善

转载于:https://www.cnblogs.com/Apy-0816/p/11100260.html

你可能感兴趣的文章
php取整函数ceil,floor,round,intval的区别
查看>>
局部富文本
查看>>
例题6-7 树的层次遍历
查看>>
2019-2-15 日记
查看>>
那些年我们跳过的 IE坑
查看>>
产生式模型和判别式模型
查看>>
2015.10.13课堂
查看>>
国内最火5款Java微服务开源项目
查看>>
[国嵌攻略][038][时钟初始化]
查看>>
C#格式化字符串
查看>>
剑指offer——二叉搜索树的后序遍历序列
查看>>
2016集训测试赛(二十四)Problem C: 棋盘控制
查看>>
稳定土厂拌设备控制系统-基本介绍(图)
查看>>
判断new出来的对象里面值为null
查看>>
hdu3037 Lucas定理
查看>>
django访问mysql数据库--模型(model)
查看>>
python3 闭包
查看>>
测试计划
查看>>
Linux下的SVN服务器搭建
查看>>
PHP分页类的实现,返回结果未渲染,更容易在HTML中使用
查看>>