代码发布项目

代码发布概述图

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

采用比特流技术

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

项目的概述:

利用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‘, <django.forms.fields.CharField object at 0x10c99c198>)])
        # 给所有的字段加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实现二次确认弹框)

<script>
        function removeData(ths,sid) {
            var res = confirm(‘你缺点要删除吗?‘);
            {#alert(res)  //  布尔值#}
            if (res){
                // 朝后端发送删除数据的请求
                $.ajax({
                    url:‘/server/delete/‘ + sid + ‘/‘,
                    type:‘get‘,
                    success:function (args) {
                        // 删除成功之后 页面应该立刻展示删除之后的效果
                        // 1 直接刷新  不太好  设计到分页的情况不太好
                        {#window.location.reload()#}
                        if (args.status){
                            // 2 利用DOM操作实时删除
                            $(ths).parent().parent().remove()
                        }
                    }
                })
            }
        }
    </script>

项目管理

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‘, <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=‘关联服务器‘)

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

原文地址:https://www.cnblogs.com/godlover/p/12706703.html

时间: 04-14

代码发布项目的相关文章

代码发布项目(二)——django实现websocket(使用channels)、基于channels实现群聊功能、gojs插件、paramiko模块

一.django实现websocket django默认是不支持websocket,只支持http协议 在django中如果想要基于websocket开发项目 你需要安装模块:channles pip3 install channels==2.3 版本不要使用最新的,如果安装最新的可能会自动把你的django版本升级到最新版 对应的解释器环境建议使用3.6(官网的说法:3.5可能有问题,3.7可能也有问题...具体原因没有给解释) channels模块内部已经帮我们封装好了 握手/加密/解密 面

代码发布项目(三)——python操作git、代码发布流程(服务器管理、项目管理)

一.python如何操作git 如果你想用python代码操作git需要下载一个模块 安装 pip install gitpython 基本使用 # 从远处仓库下载代码到本地 import os from git.repo import Repo # 创建本地存储地址,没有会自动创建文件 download_path = os.path.join('jason','NB') # 从远程仓库下载代码 Repo.clone_from('https://github.com/DominicJi/Teac

利用ant进行编译和发布项目

本文通过一个示例来解说如何通过ant进行编译和发布项目.本例按如下目录结构来组织项目. D:/web/antsample项目根目录 D:/web/antsample/src源代码目录 D:/web/antsample/src/sample/HelloWorld.java示例HelloWorld代码文件 D:/web/antsample/app应用程序目录 D:/web/antsample/app/index.jsp默认首页文件 D:/web/antsample/app/WEB-INF D:/we

自动化代码发布系统实现

日常运维问题 在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁.在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码.但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法. 尝试解决问题 当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得.基于此,开始限制代码发布频率,要求把不是很

Visual Studio 使用Web Deploy 3.6发布项目

工具:Web Deploy 3.6 配置: 1.安装web deploy,安装好之后,点击IIS根目录,此处应有如下图标 2.添加IIS 用户 3.启用服务 4.配置规则 添加规则: 提供程序:setAcl, createApp, contentPath, iisApp 操作:* 路径类型:路径前缀 路径:{userScope} 标识类型:ProcessIdentity 5.为需要使用web deploy发布的站点配置用户权限 6.VS中使用web deploy发布项目 附: 若用的是MVC的话

tomcat通过conf-Catalina-localhost目录发布项目详解

Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择. 因为这样对tomcat的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动态解析,修改完代码直接生效(修改配置除外). 但是网上关于这种方法的介绍很简单,小菜来补充一下. 1.直接在eclipse中添加一个server,添加过程中指明tomcat的路径即可. 2.在tomcat服务器的conf\Catalina\local

Gradle初探(三):发布项目到Nexus资源库

4. 发布项目 在公司开发中,如果采取Maven这种项目构建方式的,一般都会架设一个Nexus Maven私服在公司服务器上,一些公司积累的资源组件和中央库没有提供的资源,以及一些项目都会发布到私服中,然后开发人员可以通过Maven在具体开发时导入内部资源.那么既然现在要用gradle替换Maven,那么这个需求则需要满足,通过查看官方文档,可以通过引入'maven-publish'实现.具体添加的配置如下: ....... apply plugin: 'maven-publish'//添加Ma

tomcat通过conf-Catalina-localhost目录发布项目详解 摘自:http://www.cnblogs.com/iyangyuan/archive/2013/09/12/3316444.html

Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择. 因为这样对tomcat的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动态解析,修改完代码直接生效(修改配置除外). 但是网上关于这种方法的介绍很简单,小菜来补充一下. 1.直接在eclipse中添加一个server,添加过程中指明tomcat的路径即可. 2.在tomcat服务器的conf\Catalina\local

[实战篇]Tomcat发布项目-虚拟目录

在二阶段学习的过程中,我一直使用MyEclipse的方式把工作空间的项目发布到webapps目录下,这种方式自我感觉在实际开发中应用能在70%左右,但是如何涉及到一些上传操作等操作, 从新发布项目之后有时候就会发现上传的图片消失了,这个时候会特别的心塞,那么我们如何解决这种情况了,下面胖先生就带领各位童靴解决突发情况! 准备情况:这里需要清空,保持简洁! 下面我们就需要找到你要使用的Tomcat的安装或者说绿色版解压的目录,找到conf文件夹,再找到server.xml文件,需要添加如下代码,