zoukankan      html  css  js  c++  java
  • django 板块动态切换

    需求:在同一页面的不同板块上可以实现动态切换,使用一个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,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/可以返回上图。

  • 相关阅读:
    DataGridView编辑后立即更新到数据库的两种方法
    Azure 意外重启, 丢失sql server master表和 filezilla
    欧洲美食精选-德国篇
    Azure 负载均衡和可用性集
    windows Azure 域名绑定
    Azure billing 分析(2)
    Azure billing 分析
    试用windows Azure
    Excel公式无法重算,暂无法解决
    iphone 语音备忘录 同步问题
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5483682.html
Copyright © 2011-2022 走看看