django 板块动态切换
2016-05-11 21:46
519 查看
需求:在同一页面的不同板块上可以实现动态切换,使用一个view实现,具体如下图所示,点击phy显示物理机列表,点击vm显示虚机列表,phy、vm对应的url均是动态生成:
实现思路:
1.新建两个表,servers表用于存放服务器种类,pvserver物理机虚机具体服务器信息。物理机和虚机不要分别存放于两个表中,这样的话在view中无法直接通过服务器类型得出相应的服务器列表
2.两个表同步到DB后,将其注册到admin后台,用于添加服务器信息
3.新建view:
方法一(简单),直接查询pvserver表:
方法二,先查询servers表,然后再通过外键查询pvserver表:
4.编辑url:
5.访问http://192.168.50.74/aptest/servers/2/可以返回上图。
实现思路:
1.新建两个表,servers表用于存放服务器种类,pvserver物理机虚机具体服务器信息。物理机和虚机不要分别存放于两个表中,这样的话在view中无法直接通过服务器类型得出相应的服务器列表
#存放服务器类型 class servers(models.Model): serverid = models.IntegerField(primary_key=True,unique=True) servertype = models.CharField(max_length=20) def __str__(self): return self.servertype #存储物理机和虚机服务器列表 class pvserver(models.Model): servertype = models.ForeignKey(servers,to_field='serverid',db_column='servertype') #设置外键,关联到servers表的serverid,保证服务器类型的一致 name = models.CharField(max_length=100) def __str__(self): return self.name
2.两个表同步到DB后,将其注册到admin后台,用于添加服务器信息
from .models import hv,vm,servers,physerver,vmserver,pvserver class serversAdmin(admin.ModelAdmin): #fields = ['sn', 'ip'] fieldsets = [ (None, {'fields': ['serverid']}), (None, {'fields': ['servertype']}), ] list_display = ('serverid', 'servertype') #add more columns. admin.site.register(servers,serversAdmin) class pvserverAdmin(admin.ModelAdmin): #fields = ['sn', 'ip'] fieldsets = [ (None, {'fields': ['servertype']}), (None, {'fields': ['name']}), ] list_display = ('servertype', 'name') #add more columns. admin.site.register(pvserver,pvserverAdmin)
3.新建view:
方法一(简单),直接查询pvserver表:
def servers(request,serverid): #serverid从下面的types中遍历出来,为了省事,才在该视图下使用types,其实types应该从另一个页面下使用 types = serversm.objects.all() #得出所有的服务器种类,在前端web展示 serverall = pvserver.objects.filter(servertype=serverid) context={'serverall':serverall,'types':types} return render(request,'aptest/servers.html',context)
方法二,先查询servers表,然后再通过外键查询pvserver表:
def servers(request,serverid): #serverid从下面的types中遍历出来,为了省事,才在该视图下使用types,其实types应该从另一个页面下使用 serverlist = serversm.objects.get(serverid=serverid) #from aptest.models import servers as serversm types = serversm.objects.all() #得出所有的服务器种类,在前端web展示 serverall = serverlist.pvserver_set.all() #根据服务器种类遍历出相应的服务器列表 context={'serverall':serverall,'types':types} return render(request,'aptest/servers.html',context)
4.编辑url:
url(r'^servers/(\d+)/$', aptest.servers),
5.访问http://192.168.50.74/aptest/servers/2/可以返回上图。
相关文章推荐
- go语言学习,了解go语言已经2个月了。学学放放根本就没有进步
- Go语言学习(十四)面向对象编程-可见性
- 第一步 django的下载安装
- 基于入度的拓扑排序(Kahn's Algorithm)
- Go-Pholcus抓取IJGUC所有期刊
- 一起学Netty(十)之 Netty使用Google的ProtoBuf
- Django登录、注册、退出
- tango_with_django 中7.3.2 添加slug字段报错解决
- django 从get,post获取数据
- 网盘大全, 邮箱大全 good
- hiho1087状态压缩dp
- 关于django migrations的使用
- django的admin后台注册model并显示
- hdu1847——Good Luck in CET-4 Everybody!(巴什博奕)
- 自身体验Ubuntu14.04安装ROS Indigo版本
- ORA-01017 invalid username/password;logon denied" (密码丢失解决方案)
- golang的select典型用法
- 排序-冒泡排序和选择排序(golang)
- Go语言的安装和程序启动方法
- 解决win7打印机共享 出现“无法保存打印机设置,操作无法完成(错误0x000006d9)”