• stark组件前戏之以上知识点整合应用示例


    app01/views.py

    from django.shortcuts import HttpResponse
    
    # Create your views here.
    
    
    def index(request):
        return HttpResponse("index")

    luffy.py

    from django.urls import re_path
    from app01 import views
    
    
    class StarkSite(object):
        def __init__(self):
            # 类变量定义一个空列表,两个app下的xxx.py在项目启动时且在加载路由前,会往此列表中各添加一个元素,'app01'和'app02'
            self._registry = []
    
        def get_urls(self):
            # 定义一个空列表,此空列表作用相当于是子路由列表
            patterns = []
            # 循环类变量所定义的列表,此时列表已有两个元素,['app01', 'app02'],按照子路由的格式进行拼接并添加到patterns列表中
            for app in self._registry:
                patterns.append(re_path(r'^%s/$' % app, views.index))
            return patterns
    
        @property
        def urls(self):
            # 返回一个有三个元素的元组,供总路由调用
            return (self.get_urls(), None, None)
    
    
    site = StarkSite()

    app01/apps.py

    from django.apps import AppConfig
    from django.utils.module_loading import autodiscover_modules
    
    
    class App01Config(AppConfig):
        default_auto_field = 'django.db.models.BigAutoField'
        name = 'app01'
    
        def ready(self):
            autodiscover_modules("xxx")

    app01/xxx.py

    from luffy import site
    
    
    site._registry.append("app01")

    app02/xxx.py

    from luffy import site
    
    
    site._registry.append("app02")

    djangoProject/urls.py

    from django.urls import re_path
    from luffy import site
    
    
    urlpatterns = [
        re_path(r'^web/', site.urls),  # 调用luffy.py文件中的urls方法
    ]

    启动Django项目,前端输入路由进行查看

     

  • 相关阅读:
    leetcode 136 只出现一次的数字
    echo命令 显示内容
    cat 命令 查看文件内容
    more命令 分屏查看文件
    tree 命令 以树形显示目录
    leetcode 16 最接近三数之和 双指针问题
    破解NFC卡
    小米手机root
    软件设计文档
    下属做事拖拉怎么办
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15914420.html
Copyright © 2020-2023  润新知