通用视图
向用户展示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模板
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?