当前位置: 首页 > news >正文

Django项目开发举例之应用的管理界面(3)

1.创建一个管理员账户

$ python manage.py createsuperuser

Username (leave blank to use 'chenqianqian'): admin

Email address: qianqian.chen@longleding.com

Password: 

Password (again): 

Superuser created successfully.


2.以超级管理员身份登录管理站点

$ python manage.py runserver 8080

Performing system checks...


System check identified no issues (0 silenced).

April 18, 2017 - 08:51:56

Django version 1.10.5, using settings 'testproject.settings'

Starting development server at http://127.0.0.1:8080/

Quit the server with CONTROL-C.


登录网址:http://127.0.0.1:8080/admin你将会看到以下登录界面
登录进去后界面如下:

3.注册模型
将models.py中的模型注册到admin.py中这样我们就可以进行可视化管理了。
$ vi admin.py
#--------------------------------------------------------------------------------

from django.contrib import admin

from .models import Question,Choice


# Register your models here.


admin.site.register(Question)

admin.site.register(Choice)

#---------------------------------------------------------------------------------


4.修改admin.py文件自定义表单样式

1)修改表单界面字段顺序重新排列
$ vi admin.py
#---------------------------------------------------------------------------------

from django.contrib import admin

from .models import Question,Choice


# Register your models here.

#将Question表单界面字段顺序重新排列

class QuestionAdmin(admin.ModelAdmin):

    fields=['pub_date','question_text']


admin.site.register(Question,QuestionAdmin)

admin.site.register(Choice)

#----------------------------------------------------------------------------------

无论何时,当你需要修改一个对象的管理选项的话,就按照这样的步骤来做:创建一个模型管理对象(class),然后把该对象(class名)作为第二个参数传入admin.site.register()

2)划分字段集

$ vi admin.py

#--------------------------------------------------------------------------------------------------------------------

from django.contrib import admin

from .models import Question,Choice


# Register your models here.

class QuestionAdmin(admin.ModelAdmin):

    fieldsets=[

        (None,              {'fields':['question_text']}),

        ('Date information',{'fields':['pub_date']}),

    ]


admin.site.register(Question,QuestionAdmin)

admin.site.register(Choice)

#-------------------------------------------------------------------------------------------------------------------

3)为字段集指定HTML样式

$ vi admin.py

#-------------------------------------------------------------------------------------------------------------------

from django.contrib import admin

from .models import Question,Choice


# Register your models here.

class QuestionAdmin(admin.ModelAdmin):

    fieldsets=[

        (None,              {'fields':['question_text']}),

        ('Date information',{'fields':['pub_date'],'classes':

'collapse'}),

    ]


admin.site.register(Question,QuestionAdmin)

admin.site.register(Choice)

#-------------------------------------------------------------------------------------------------------------------

5.添加关联对象

    实现创建Question对象的同时可以直接添加一组Choice

#-------------------------------------------------------------------------------------------------------------------

from django.contrib import admin
from .models import Question,Choice

# Register your models here.

#定义Choice样式
class ChoiceInLine(admin.StackedInline):
    model=Choice
    extra=3

#将Question表单界面字段顺序重新排列
class QuestionAdmin(admin.ModelAdmin):
    fieldsets=[
        (None,              {'fields':['question_text']}),
        ('Date information',{'fields':['pub_date'],'classes':
'collapse'}),
    ]
    inlines=[ChoiceInLine]

admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice)

#-------------------------------------------------------------------------------------------------------------------

    使用admin.StackedInline会发现页面不够紧凑我们可以使用admin.TabularInline方法,这样界面就会紧凑很多






相关文章:

  • Django项目开发举例之自定义管理界面(4)
  • Django项目开发举例之用户界面视图模版(5)
  • Django项目开发举例之用户界面表单(6)
  • Django中Meta类详解
  • No python interpreter configured for the project
  • Django中各文件常用参数详解
  • Django-xadmin的使用
  • Linux定时任务Crontab命令详解
  • Oracle随机抽取数据
  • ORACLE输出结果到文件
  • 解决sqlplus中输错命令时的删除、光标键不能使用问题
  • BETWEEN AND的边界值问题
  • ORACLE数据库已知当前日期求上月5号和当月5号
  • ORACLE定时任务举例
  • Oracle sqlplus 常用格式化输出命令
  • 2018一半小结一波
  • 4. 路由到控制器 - Laravel从零开始教程
  • Hibernate【inverse和cascade属性】知识要点
  • JDK 6和JDK 7中的substring()方法
  • webpack+react项目初体验——记录我的webpack环境配置
  • zookeeper系列(七)实战分布式命名服务
  • 从0到1:PostCSS 插件开发最佳实践
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 利用DataURL技术在网页上显示图片
  • 终端用户监控:真实用户监控还是模拟监控?
  • (4)STL算法之比较
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)Linux Shell编程——输入输出重定向
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)JAVA中的堆栈
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .form文件_SSM框架文件上传篇
  • .net CHARTING图表控件下载地址
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Core中的去虚
  • .NET NPOI导出Excel详解
  • .Net(C#)自定义WinForm控件之小结篇
  • .net反编译工具
  • .net和php怎么连接,php和apache之间如何连接
  • .net快速开发框架源码分享
  • @Async注解的坑,小心
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @Conditional注解详解
  • @EnableWebMvc介绍和使用详细demo
  • @Pointcut 使用
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [HNOI2018]排列