美文网首页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