配置文件历史记录

python文件

csrf_exempt
def nginxhistory(request):
    if request.method == "POST":
       ret = request.POST.get(‘code‘)
       id2 = request.GET[‘abc‘]
       ret = str(ret)
       ret1 = ret.replace(‘\r‘,‘‘)
       ret2 = NginxET.objects.values_list(‘message‘, flat=True).get(id=id2)
       ret2 = str(ret2)
       dir1 = NginxET.objects.values_list(‘dirname‘, flat=True).get(id=id2)
       file1 = NginxET.objects.values_list(‘filename‘, flat=True).get(id=id2)
       text1_lines = ret1.splitlines()
       text2_lines = ret2.splitlines()
       d = difflib.HtmlDiff()
       diff = d.make_file(text1_lines,text2_lines)
       if text1_lines == text2_lines: 
          return HttpResponse(‘配置文件没有更新不需要写入数据库^-^!!!!!!‘) 
       else:
           date1 = datetime.datetime.now()
           date2 = date1 + datetime.timedelta(hours=14)
           date = date2.strftime(‘%Y-%m-%d %H:%M:%S‘)
           NginxEThistory.objects.create(dirname=dir1,filename=file1,message=ret2,onlinetime=date)
           NginxET.objects.filter(id=id2).update(message=ret1,updatetime=date)
           all_server = NginxET.objects.all()
           paginator = Paginator(all_server,20)

           try:
               page = int(request.GET.get(‘page‘,‘1‘))
           except ValueError:
               page = 1

           try:
               all_server = paginator.page(page)
           except :
               all_server = paginator.page(paginator.num_pages)
           return render_to_response(‘nginxet.html‘,
                             {‘all_host_list‘: all_server, ‘page‘: page, ‘paginator‘:paginator},context_instance=RequestContext(request))

html文件

{% extends "index.html" %}
{% block title %}OMS{% endblock %}
{% block css %}
<!-- DataTables-->
<link rel="stylesheet" href="/static/plugins/dataTables/css/dataTables.css">
{% endblock %}
{% block content %}
      <form action="http://:8999/nginxet/" method="POST"> 
      <div class="row">
            <div class="col-md-12">
                 <div class="panel panel-default">
                      <div class="panel-body">
                           {% if all_host_list %}
                           <table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
                               <thead>
                                   <tr>
                                      <th>ID</th>
                                      <th>IP地址</th>
                                      <th>文件名</th>
                                      <th>上线时间</th>
                                      <th>更新时间</th>
                                   </tr>
                               </thead>

                               <tbody>
                               {% for all_host in all_host_list %}
                                   <tr>
                                      <td>{{ forloop.counter }}</td>
                                      <td>{{ all_host.dirname }}</td>
                                      <td>{{ all_host.filename }}</td>
                                      <td>{{ all_host.onlinetime }}</td>
                                      <td>{{ all_host.updatetime }}</td>
                                      <td><a href="{% url ‘message‘ id=all_host.id %}" class="btn btn-info btn-sm">内容展示</a>
                                          <a href="http://:8999/nginx_update/?update=1" style="color:white" class="btn btn-danger btn-sm" role="button">历史</a>
                                          <a href="http://:8999/nginx_diff/?id={{ all_host.id }}" class="btn btn-info btn-sm">最近一次更改比较</a>
                                          <a href="http://:8999/nginx/?id={{ all_host.id }}" class="btn btn-info btn-sm">推送</a></td>
                                   </tr>
                               {% endfor %}
                               </tbody>
                            </table>
                           {% endif %}
                            <div class="row">
                                 <div class="col-xs-6">
                                       <div class="dataTables_info" id="example_info" role="alert" aria-live="polite" aria-relevant="all"></div>
                                 </div>
                                 <div class="col-xs-6">
                                      <div class="dataTables_paginate paging_simple_numbers" id="exmaple_paginate">
                                           <a href="{% url ‘sousuo‘ %}" class="btn btn-info btn-sm" role="button">搜索</a>
                                           <a href="{% url ‘sousuoh‘ %}" class="btn btn-info btn-sm" role="button">历史搜索</a>
                                           {% if all_host_list.has_previous %}
                                                <a href="?page={{ all_host_list.previous_page_number }}">上一页</a>
                                           {% endif %}
                                           <span class="current">
                                                第{{ all_host_list.number }}页,共{{ all_host_list.paginator.num_pages }}页
                                           </span>
                                           {% if all_host_list.has_next %}
                                                <a href="?page={{ all_host_list.next_page_number }}">下一页</a>
                                           {% endif %}
                                      </div>
                                 </div>
                           </div> <!--row end-->
                         </div>
                     </div>
                 </div>
                 <div style = "text-align: center">
                 <button type="submit" class="btn btn-primary">全部更新</button>
                </div>
</form>
{% endblock %}
时间: 2025-01-08 14:30:23

配置文件历史记录的相关文章

强大的vim配置文件,让编程更随意

花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按"F8"可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名.作者.联系方式.建立时间等,读者可根据需求自行更改 3.映射"Ctrl + A"为全选并复制快捷键,方便复制代码 4.按"F2"可以直接消除代码中的空行 5."F3"

WebConfig配置文件详解

<?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual Studio 中的"网站"->"Asp.Net 配置"选项. 设置和注释的完整列表在 machine.config.comments 中,该文件通常位于 "Windows"Microsoft.Net"Framework"v2.

Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: 1.系统级别: /etc/environment:在登录时操作系统使用的文件,系统在读取profile前,设置环境文件的环境变量. /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

Redis源码解析(十六)--- config配置文件

每个系统都会有类似一个config配置文件,config文件里的内容想想都知道,一定就是那么一些固定的一行行的属性代码了,今天在看redis代码中的config属性,那拉下来的一笔,的确多,目测在50至100个属性左右.如果就此将config每个属性代表什么意思不是我的风格,也一定是很乏味的,所以我的特点就是在代码中去理解程序员在写这类代码时的思路,和茫茫代码中的亮点.我们知道,redis运行的环境包括很多种的,windows,Linux,mac os等等,不同的操作系统,当然有些属性就不能支持

分享一下个人的Vim配置文件

强烈拥护开源精神,高举开源大旗,今天我就分享下我自己结合网上还有自己实际使用配的vimrc,可以给各位参考下,不要见笑哈,具体说明我在rc里写的也很详细,可以具体看下,也希望可以借这个机会能多认识认识几个Vimer们 "======================================== " File Name: .vimrc " Author: Jin Yuqi " Email: [email protected] " Description

[转]Web.config配置文件详解(新手必看)

本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以

ASP.NET 配置文件

花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual Studio 中的"网站"->"Asp.Net 配置"选项. 设置和注释的完

zabbix_server.conf配置文件参数详解

本文章主要是对zabbix_server.conf文件内一些参数的解释,有需要可以参考: #分布式节点id号,0代表是独立服务器,默认是被注释掉的 NodeID=0 #zabbix server的监听端口,默认是10051,可以自行修改 ListenPort=10051 #连接的源ip地址,默认为空 SourceIP= #日志文件的存放位置 LogFile=/tmp/zabbix_server.log #日志文件的大小,单位为MB,0表示禁用日志自动rotation,如果日志达到了限制,并且ro

zabbix server配置文件参数详解

AlertScriptsPath默认值:/usr/local/share/zabbix/alertscripts说明:告警脚本目录 AllowRoot默认值:0 说明:是否允许使用root启动,0:不允许,1:允许,默认情况下她会使用zabbix用户来启动zabbix进程,不推荐使用root CacheSize取值范围: 128K-8G默认值:8M说明:配置缓存,用于存储host,item,trigger数据,2.2.3版本之前最大支持2G,目前最大支持8G,一般用不了多少的. CacheUpd