热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:代码发布项目

篇首语:本文由编程笔记#小编为大家整理,主要介绍了代码发布项目相关的知识,希望对你有一定的参考价值。代码发布概述图

篇首语:本文由编程笔记#小编为大家整理,主要介绍了代码发布项目相关的知识,希望对你有一定的参考价值。



代码发布概述图

技术图片


如何解决当服务器特别多的时候,从同一个地方下载数据会出现压力过大的时刻(上传者只有一个,下载者却有很多歌,上传者压力太大)

采用比特流技术

将所有的人都变成既可以是上传者也可以是下载者


项目的概述:

利用modelform实现服务器表的增删改查

模板的基础作为模板的html文件上一般情况下,都应该定义在三个区域css区,html区和js区

针对服务器添加数据的功能,需要对提交的数据进行数据校验,还需要展示提示的信息,当模型字段非常多的时候前端页面展示代码量书写会很多,如何解决这样的问题?

‘‘‘
标签渲染
数据校验
信息展示
‘‘‘
这三者可以用modelform组件来做,会比form组件简单很多
class ServerModelForm(ModelForm):
class Meta:
model = models.Server
fields = "__all__"
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
# print(self.fields) # OrderedDict([(‘hostname‘, )])
# 给所有的字段加class属性
for k,field_obj in self.fields.items():
field_obj.widget.attrs[‘class‘] = ‘form-control‘
return redirect(‘/server/list/‘) # 可以写路径
return redirect(‘server_list‘) # 还可以写别名 但是如果出现有名无名分组的反向解析 则必须使用reverse方法

服务器管理

class Server(models.Model):
‘‘‘服务器表‘‘‘
hostname = models.CharField(verbose_name=‘主机名‘, max_length=64)

语言环境

django默认的语言环境是英文,但是它的内部其实支持多个国家的语言,只需要你自己手动配置即可

# LANGUAGE_CODE = ‘en-us‘
LANGUAGE_CODE = ‘zh-hans‘
# 如何查看django到底支持哪些语言环境
from django.conf import global_settings
LANGUAGES = [
(‘af‘, gettext_noop(‘Afrikaans‘)),
(‘ar‘, gettext_noop(‘Arabic‘)),
(‘ast‘, gettext_noop(‘Asturian‘)),
...
]

针对删除功能,我们想做一个二次确认的过程(ajax结合sweetalert实现二次确认弹框)



项目管理

class Project(models.Model):
"""项目表"""
title = models.CharField(verbose_name=‘项目名‘,max_length=64)
repo = models.CharField(verbose_name=‘仓库地址‘,max_length=128)

env_choices = (
(‘prod‘,‘正式‘),
(‘test‘,‘测试‘)
)
env = models.CharField(verbose_name=‘环境‘,max_length=16,choices=env_choices,default=‘test‘)

代码的优化



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



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



"""
什么是类?
类是对象公共的属性和技能的结合体
什么是父类?
父类是类公共的属性和技能的结合体
"""
# 父类
from django.forms import ModelForm
class BaseModelForm(ModelForm):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
# print(self.fields) # OrderedDict([(‘hostname‘, )])
# 给所有的字段加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‘, )])
# 给所有的字段加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=‘关联服务器‘)

项目展示页面额外展示当前两个字段


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
author-avatar
mobiledu2502916573
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有