day17 stark组件开发之前戏

介绍:
  stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件。
目标:
  10s 完成一张表的增删改查。

前戏:

django项目启动时,自定义执行某个py文件。

django启动时,且在读取项目中 路由加载 之前执行某个py文件。

在任意app的apps.py中的Config类中定义ready方法,并调用autodiscover_modules
    from django.apps import AppConfig
    from django.utils.module_loading import autodiscover_modules


    class App01Config(AppConfig):
    name = 'app01'

    def ready(self):
        autodiscover_modules('xxxx')


django在启动时,就会去已注册的所有app的目录下找 xxxx.py 并自动导入。


如果执行两次,是因为django内部自动重启导致,处理方式:
    python manage.py runserver 120.0.0.1:8001 --noreload

提示:
    如果xxxx.py执行的代码向 “某个神奇的地方” 放入了一些值。之后的路由加载时,可以去“某个神奇的地方”读取到原来设置的值。

单例模式

单,一个。
例,实例、对象。

通过利用Python模块导入的特性:在Python中,如果已经导入过的文件再次被重新导入时候,python不会再重新解释一遍,而是选择从内存中直接将原来导入的值拿来用。
xxxx.py
    class AdminSite(object):
        pass
    site = AdminSite() # 为AdminSite类创建了一个对象(实例)
app.py
    import utils
    print(utils.site)

    import utils
    print(utils.site)


提示:
    如果以后存在一个单例模式的对象,可以先在此对象中放入一个值,然后再在其他的文件中导入该对象,通过对象再次讲值获取到。

django路由分发的本质:include

方式一:
    from django.conf.urls import url,include

    urlpatterns = [
        url(r'^web/', include("app01.urls")),
    ]

方式二:
    include函数主要返回有三个元素的元组。
    from django.conf.urls import url,include
    from app01 import urls
    urlpatterns = [
        url(r'^web/', (urls, app_name, namespace)), # 第一个参数是urls文件对象,通过此对象可以获取urls.patterns获取分发的路由。
    ]


    在源码内部,读取路由时:
        如有第一个参数有:urls.patterns 属性,那么子路由就从该属性中后去。
        如果第一个参数无:urls.patterns 属性,那么子路由就是第一个参数。

方式三:
    urlpatterns = [
        url(r'^web/', ([
            url(r'^index/', views.index),
            url(r'^home/', views.home),
        ], app_name, namespace)), # 第一个参数是urls文件对象,通过此对象可以获取urls.patterns获取分发的路由。
    ]
posted @   simon_T  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示