美文网首页Python开发
python(06)实践Django-views

python(06)实践Django-views

作者: 灼灼2015 | 来源:发表于2017-08-09 13:47 被阅读40次

需求:监控jenkins中项目的构建,对已打标记的构建,做版本发布,并提交给实施部门,实施部门根据接收到的发布版本进行升级工作。
现状:
1)发布包没地方管,当前在各个测试人员的电脑上
2)已发布版本找不到SVN/Git上的对应的地址
3)不知道现网是哪个版本
4)不知道已发布的包情况(有没有升级,升级包质量好还是坏)
Model:
PCI:在管理中和jenkins关联的项目
PCI_BUILD: jenkins中项目的构建信息
PCI_RELEASE: 出包
ONLINE_VERSION: 现网版本管理
View:
实现基本的增删改查,异步查询项目在jenkins中的状态。
1)对jenkins中build状态为success--进行测试
2)对测试通过的build打tag
3)对有tag的build 进行出升级包
4)根据升级包进行升级并反馈结果
其中测试、出包、升级都是线下进行,当前只对结果的记录,后期在做自动。

在view阶段使用到的:

  1. 使用到TemplateView、CreateView、UpdateView、DetailView、ListView、FormMixin
    class PCIListView(TemplateView):
       template_name = 'devops/pci_list.html'      #指定跳转的页面
       model = PCI                                       #指定表
       context_object_name = 'PCI'            #上下文变量
        def get_context_data(self, **kwargs):#这个方法用来添加额外的内容到上下文变量中。如传递参数
         context = {
             'app': 'PCI',
             'action': 'PCI list',
         }
         kwargs.update(context)
         return super(PCIListView, self).get_context_data(**kwargs)
    
    而Listview比TemplateView多了一个get_queryset(self)
  1. 通过 def get(self, request, *args, **kwargs) 获取页面传递过来的参数

    pk_url_kwarg = 'pk'
    def get(self, request, *args, **kwargs):
        self.pk = pk = kwargs.get(self.pk_url_kwarg)
        self.pci = PCI.objects.get(id=pk)
        return super(PCIBuildsListView, self).get(request, *args, **kwargs)
    
  2. 通过 def get_context_data(self, **kwargs)将参数传递到下一个页面

     def get_context_data(self, **kwargs):
        context = {
            'app': 'pcibuild',
            'action': 'pcibuild list',
            'pk': self.pk
        } 
    

    页面上通过 {pk} 获取参数值

  3. 通过 def form_valid(self, form) 做填写字段合法性进行校验

  4. views_urls的编写

    urlpatterns = [
      url(r'^pci/$', views.PCIListView.as_view(), name='pci-list'),
      url(r'^pci/create/$', views.PCICreateView.as_view(), name='pci-create'),
      url(r'^pci/(?P<pk>[0-9]+)/update/$', views.PCIUpdateView.as_view(), name='pci-update'),
      url(r'^pci/(?P<pk>[0-9]+)/$', views.PCIDetailView.as_view(), name='pci-detail'),
    ]
    
  html上通过 <li><a href="{% url 'devops:pci-list' %}">构建</a></li>访问到列表页面

相关文章

网友评论

    本文标题:python(06)实践Django-views

    本文链接:https://www.haomeiwen.com/subject/gbriwttx.html