码迷,mamicode.com
首页 > 其他好文 > 详细

通用视图

时间:2016-06-17 12:35:19      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

向用户展示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模板

 

通用视图

标签:

原文地址:http://www.cnblogs.com/dreamer-fish/p/5593520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!