博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 板块动态切换
阅读量:7238 次
发布时间:2019-06-29

本文共 2332 字,大约阅读时间需要 7 分钟。

需求:在同一页面的不同板块上可以实现动态切换,使用一个view实现,具体如下图所示,点击phy显示物理机列表,点击vm显示虚机列表,phy、vm对应的url均是动态生成:

             

实现思路:

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,pvserverclass 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/可以返回上图。

 

转载于:https://www.cnblogs.com/dreamer-fish/p/5483682.html

你可能感兴趣的文章
Linux下安装mantis
查看>>
配置java环境变量时的一个陷阱(javapath)
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
2018-1-22Linux系统管理(2)fdisk及管理工具等命令
查看>>
Python数据类型-类功能详解--【字符串】
查看>>
awk练习题
查看>>
Python除法运算和幂运算代码实例
查看>>
tomcat 指定编码
查看>>
第七次课作业(项目沟通管理、合同管理)
查看>>
PHP 性能分析与实验(二)——PHP 性能的微观分析
查看>>
angular2 在header中带有继承的cookie
查看>>
docker_270
查看>>
maven规范:ssh框架整合
查看>>
iSCSI
查看>>
samba
查看>>
KMP子串查找算法(二十六)
查看>>
硬盘SMART检测参数详解[转]
查看>>
异常解决java.io.IOException: invalid constant type: 15
查看>>