• python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)


    前言

    xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面。
    xadmin的html页面是用的Bootstrap3框架设计的,layout布局用到的是django-crispy-forms框架,本篇详细讲下django-crispy-forms的官方文档案例

    django-crispy-forms

    当我们使用xadmin后台的时候,在INSTALLED_APPS里面同时添加了xadmin和crispy_forms这2个app,xadmin已经知道了,但不知道crispy_forms这个app是干什么的

    可以在百度上搜到crispy_forms,顺藤摸瓜找到django-crispy-forms的github地址https://github.com/django-crispy-forms/django-crispy-forms

    可以看出它是基于django-uni-form这个框架开发的,专门用于详情页面的布局设计,完美的支持Bootstrap前端框架。
    它的设计理念是Forms have never been this crispy

    更多功能介绍,查看官方文档https://django-crispy-forms.readthedocs.io/en/latest/

    Tab&TabHolder

    使用TabHolder 可以快速设计一个标签式导航菜单,不同的标签用Tab分开,Tab里面第一个参数是标签的名称,一个Tab可以设计多个Field。

    TabHolder (
        Tab ('First Tab' ,
            'field_name_1' ,
            Div ('field_name_2' )
        ),
        Tab ('Second Tab' ,
            Field ('field_name_3' , css_class = 'extra' )
        )
    )

    标签式导航菜单

    接着前面这篇python测试开发django-39.xadmin详情页面布局form_layout页面设计的基础上,添加一个标签式导航菜单案例。
    关于导航菜单的更多的介绍可以看菜鸟教程地址http://www.runoob.com/bootstrap/bootstrap-navigation-elements.html

    # adminx.py
    import xadmin
    from .models import ArticleDetail
    from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side, Field
    
    class MoreActicl(object):
        list_display = ['title', 'body', 'auth']
        # layout布局
        form_layout = (
            Fieldset(u'',
                     Row('title', 'auth'),  # Row 表示将里面的字段作为一行显示
                     Row('classify'),
                     css_class = 'unsort',
                     ),
            Fieldset(('正文内容'),       # Fieldset第一个参数表示区块名称
                     'body',
                     css_class = 'unsort',
                     ),
            TabHolder(
                  Tab('body-raw',
                      Field('title', css_class="extra"),
                      Field('body'),
                      css_class = 'unsort'
                      ),
                  Tab('body-json',
                      Field('body',)
                      ),
                      css_class = 'unsort',
                  )
        )
    
    xadmin.site.register(ArticleDetail,  MoreActicl)
    

    打开之后页面显示效果如下图

    css_class="extra"可以将输入框占一整行

  • 相关阅读:
    mini2440 UBoot启动过程完全分析
    Linux Shell常用命令学习(1)
    S3C6410启动模式介绍
    漫画与新媒体的传播思考
    注册表修改启动项
    邮件主题是乱码的原因gbk 在utf8 显示问题
    移动 电话费 套餐
    java 异常的问题讨论
    领结的打法
    c# 字符之间的转换
  • 原文地址:https://www.cnblogs.com/mashuqi/p/11024122.html
Copyright © 2020-2023  润新知