zoukankan      html  css  js  c++  java
  • 通用视图

    向用户展示hvvms、hvsrvs、hvvhds信息,除了model名称不同,view中的功能都相同,所以可以通过通用视图实现,减少代码重复

    参考:http://djangobook.py3k.cn/2.0/chapter08/

    1.编辑urls.py

    from django.conf.urls import *
    from django.conf.urls import url
    from . import views,models
    urlpatterns = [
        url(r'^$', views.index, name='index'),
        
        # url(r'^vmmgmt/$', views.vmmgmt, name='vmmgmt',{'template_name':'sinfors/vmmgmt.html'}), #在view中使用render_to_response传递template_name参数 defvmmgmt(request,template_name)
        url(r'^vmmgmt-vms/$', views.vmmgmt,{'model':models.hvvms},name='vmmgmt-vms'), #通过 model 参数直接传递模型类
        url(r'^vmmgmt-hv/$', views.vmmgmt,{'model':models.hvsrvs},name='vmmgmt-hv'),
        url(r'^vmmgmt-vhd/$', views.vmmgmt,{'model':models.hvvhds},name='vmmgmt-vhd'),
        
    ]

    2.编辑views.py

    def vmmgmt(request,model): #接收url中的model参数
        obj_list = model.objects.all() #从url中的 model 参数接收到具体的model类。模板中要使用 obj_list 变量做for循环
        counts = model.objects.count()
    
        if request.method == 'GET':
            if 'q-hv' in request.GET:
                qdata = request.GET['q-hv']
                if qdata is not None:
                    obj_list = model.objects.filter(serverip__icontains=qdata)
                    counts = len(obj_list)
    context={'obj_list':obj_list,'counts':counts} template_name = 'sinfors/vmmgmt_%s.html' % model.__name__.lower() # 每个Python的类都有一个 __name__ 属性返回类名。 这特性在当我们直到运行时刻才知道对象类型的这种情况下很有用。 比如, hvvms 类的 __name__ 就是字符串 'hvvms' 。 return render(request,template_name,context) #####return render_to_response(template_name,context)无法接收csrfmiddretoken参数

    3.已有如下model和模板:

    model:  

    hvvms.objects.all() #虚机信息
    hvsrvs.objects.all() #宿主信息
    hvvhds.objects.all() #vhd信息

    模板:

    vmmgmt_hvvms #虚机模板
    vmmgmt_hvsrvs #宿主模板
    vmmgmt_hvvhds #VHD模板

  • 相关阅读:
    Codeforces 547D. Mike and Fish 题解
    Codeforces 521E. Cycling City 题解
    Codeforces 585E. Present for Vitalik the Philatelist 题解
    Codeforces 605E. Intergalaxy Trips 题解
    AGC033D
    第3次作业:卷积神经网络
    Linux下如何编写go语言程序实现菲波拉契数列
    C语言常见典型错误汇总(助教)
    第一次作业:深度学习基础
    数论复习_欧几里得算法与扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5593520.html
Copyright © 2011-2022 走看看