Stark组件 01 自动生成url&提取公共视图函数

快速完成对数据库的增删改查

01:

  1.django启动时,自定义执行某个py文件

   在任意app的apps.py Config类中 定义 ready方法,并调用 autodiscover_modules('xxx') 则django在路由加载之前会去已注册的所有app目录下找xxx.py并自动导入

from django.apps import AppConfig
from django.utils.module_loading import autodiscover_modules ##### 导入模块
class App01Config(AppConfig):
    name = 'app01'
    def ready(self): ####定义ready方法
        autodiscover_modules('xxx')

 

   如果xxx.py向某个地方放入一些值,则可以在路由加载前读取

  2.单例模式

 

    通过python模块导入模块特性(如果已经被导入,python不会再重新解释一遍,而是直接从内存中拿来用)

    存在单例模式 可以在这个对象放一个值,然后再其他文件中导入该对象,通过该对象再次获取值

 

  3.django路由分发的本质

      源码:return (urlconf_module, app_name, namespace)

      第一个参数是urls文件对象,可以获取urls.patterns.

      第一个参数有parttterns 属性 则从从该属性中获取,如果没有则从自己获取    

urlpatterns = [
    re_path(r'^web/',include('app01.urls')),

]


from app01 import urls
urlpatterns = [
    re_path(r'^web/',(urls,'app_name','namespace')),

]



把第一个参数urls变成列表
urlpatterns = [
    re_path(r'^web/',([
        re_path('^index/',views.index),
        re_path('^log/',views.log),
        re_path('logout/',views.logout),
                      ],'app_name','namespace')),

]

 

 


 

自动生成url:app名称/表名称/ (自定义前缀) list    add   del  edit 

  根据models中的类(表) 获取所在app名称以及表名

  print(model_class._meta.app_label)

  print(model_class._meta.model_name)

 提取公共视图函数:

URL分发/拓展/前缀:

  get_urls   extre_urls  prev

别名:

  'app_表_函数名称'  区分前缀

 


 

定制页面显示的列

 

self.model_class._meta.get_field('name').verbose_name
表._meta.get_field('xx').xxx 根据表拿到字段里的值

定制自定义显示的函数
判断是不是函数
from types import FunctionType
isinstance(func,FunctionType)
渲染标签
from django.utils.safestring import mark_safe

数据库 choice字段 ==》 obj.get_字段名_display() 获取中文

query_params = request.GET.copy()

query_params._mutable = True ##变为可修改

query_params['xx']= xxx

 

posted @ 2019-10-21 23:33 tangshuo! 阅读(...) 评论(...) 编辑 收藏