zoukankan      html  css  js  c++  java
  • 代码的优化

    代码的优化

    代码的优化一定是在你把功能实现之后再去优化(先努力实现再考虑优化)

    • 将所有的modelform单独抽取出来

    • 将modelform类中所有公共的部分抽取出来形成基类

      """
      什么是类?
      	类是对象公共的属性和技能的结合体
      什么是父类?
      	父类是类公共的属性和技能的结合体
      """
      # 父类
      from django.forms import ModelForm
      
      
      class BaseModelForm(ModelForm):
          def __init__(self,*args,**kwargs):
              super().__init__(*args,**kwargs)
              # print(self.fields)  # OrderedDict([('hostname', <django.forms.fields.CharField object at 0x10c99c198>)])
              # 给所有的字段加class属性
              for k,field_obj in self.fields.items():
                  field_obj.widget.attrs['class'] = 'form-control'
                  
                  
                  
      # 子类
      from app01.myforms.base import BaseModelForm
      from app01 import models
      
      
      class ServerModelForm(BaseModelForm):
          class Meta:
              model = models.Server
              fields = "__all__"
      
    • 当模型表字段特别多的时候,并且并不是所有的字段都需要展示到前端给用户观看

      from django.forms import ModelForm
      
      
      class BaseModelForm(ModelForm):
          # 自定义字段是否需要加额外属性的配置
          exclude_bootstrap = []
      
          def __init__(self,*args,**kwargs):
              super().__init__(*args,**kwargs)
              # print(self.fields)  # OrderedDict([('hostname', <django.forms.fields.CharField object at 0x10c99c198>)])
              # 给所有的字段加class属性
              for k,field_obj in self.fields.items():
                  if k in self.exclude_bootstrap:
                      continue  # 排除在外不添加样式
                  field_obj.widget.attrs['class'] = 'form-control'
      
    • 项目表需要额外添加字段

          # 线上服务器地址
          path = models.CharField(verbose_name='线上地址',max_length=64)
          # 关联服务器
          """
          一个项目可以跑在多个服务器上
          一个服务器其实也可以跑多个项目 (公司服务器不够的时候 可以混用)
          """
          servers = models.ManyToManyField(to='Server',verbose_name='关联服务器')
      
    • 项目展示页面额外展示当前两个字段

  • 相关阅读:
    C++从文件名中去掉后缀
    《深度学习21天实战caffe》_简单读书笔记
    初等变换和阶梯矩阵【】
    A*寻路-2(忘了哪个是最终版的)
    [TWLFramework] 全局委托 全局枚举
    [TWLFramework] Singleton
    [TWLFramework] MessageCenter
    [TWLFramework] Message
    [TWLFramework] UIManager
    [TWLFramework] BasePanel
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12710497.html
Copyright © 2011-2022 走看看