zoukankan      html  css  js  c++  java
  • stark

     在介绍前面三个注意点后,开始写stark组件内容。

    1 from django.apps import AppConfig
    2 from django.utils.module_loading import autodiscover_modules
    3 
    4 class StarkConfig(AppConfig):
    5     name = 'stark'
    6 
    7     def ready(self):
    8         autodiscover_modules('stark')

    这样项目启动时,自动查找并执行每个app的stark.py。

    单例模式实现

     1 class StarkSite(object):
     2     def __init__(self):
     3         self._registry = []
     4         self.app_name = 'stark'
     5         self.namespace = 'stark'
     6 
     7     def register(self, model_class, handler_class=None,prev=None):
     8         """
     9 
    10         :param model_class:models中的数据库相关的类(是一个类!!)
    11         :param handler_class:处理请求的视图函数所在的类
    12         :param prev:url前缀
    13         :return:
    14         """
    15         if not handler_class:
    16             handler_class = StarkHandler
    17         self._registry.append({'prev':prev,'model_class':model_class,'handler':handler_class(self,model_class,prev)})
    18 
    19 
    20     def get_urls(self):
    21         patterns = []
    22         for item in self._registry:
    23             prev = item['prev']
    24             model_class = item['model_class']
    25             handler = item['handler']
    26             app_name = model_class._meta.app_label
    27             model_name = model_class._meta.model_name
    28 
    29             if prev:
    30                 patterns.append(url(r'^%s/%s/%s/'%(app_name,model_name,prev),(handler.get_urls(),None,None)))
    31             else:
    32                 patterns.append(url(r'^%s/%s/' % (app_name, model_name), (handler.get_urls(), None,None)))
    33 
    34         return patterns
    35 
    36     @property
    37     def urls(self):
    38         return self.get_urls(),self.app_name,self.namespace
    39 
    40 
    41 site = StarkSite()

    (1)实例化StarkSite。以后别人导入这个模块,都是使用这个site同一个对象。

    (2)添加的model类是以字典的形式存储在self._registry列表里。

    (3)路由分发实现 url(r'^stark/',site.urls)

  • 相关阅读:
    Shell中的特殊变量和结构
    自由的Debian
    关于系统定制的一些链接
    超出两行显示省略号
    json转换
    区分LocalStorage和偏好数据
    去除谷歌浏览器中的默认文本框样式
    js访问xml
    js执行跨域请求
    mvc通过controller创建交互接口
  • 原文地址:https://www.cnblogs.com/steven2020/p/10700019.html
Copyright © 2011-2022 走看看