django入门-自定义管理界面-part7
尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6522854.html
完全翻译自官方文档 https://docs.djangoproject.com/en/1.10/intro/tutorial07/
在上一节中我们把Question加入到了admin的后台管理中,你肯定想更改admin的显示界面,重新编辑一下admin.py
from django.contrib import admin from .models import Question class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text'] admin.site.register(Question, QuestionAdmin)
看到变化了吗,多显示了两个字段
再修改一下
from django.contrib import admin from .models import Question class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']}),
] admin.site.register(Question, QuestionAdmin)
图我就不贴了,想看想过的去看官方文档吧
Question和Choice应该是由关联的,我们应该把她们展示在一个页面
我们把Choice也加入到admin界面
admin.site.register(Choice)
Choice和Question是外键关联的ForeignKey,django把Question显示成了一个下拉列表的形式让你选择
现在我们只能在Choice和Question各自的页面添加,下面我们把他们放在一个页面
from django.contrib import admin from .models import Choice, Question class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3 class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline] admin.site.register(Question, QuestionAdmin)
我们在Question页面,设置了展示3个Choice,你会发现页面现在有点长了,让它展示的紧凑一些,修改一下这里
class ChoiceInline(admin.TabularInline): #就是括号里面的
下面在来改变一下admin的修改页面,默认django展示model的__str__,我们在admin.py里添加list_display
class QuestionAdmin(admin.ModelAdmin): list_display = ('question_text', 'pub_date', 'was_published_recently')
想更改显示内容的排序结果和字段名称
class Question(models.Model):
# ...
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date <= now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
admin还能对为日期添加过滤器,还能给加搜索框,只需要在你的admin.py里加上
list_filter = ['pub_date']
search_fields = ['question_text']
下面讲如何自定义admin的模板
在你的项目目录(跟manager.py一个层级)创建一个文件夹叫templates,其实这个目录可以创建在任何位置,放在项目目录里更方便而已.
编辑你的settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 就是这里,django会从这些目录的位置加载你的模板
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
再在templates里创建admin/templates, 拷贝admin/base_site.html到你新创建的目录里,admin/base_site.html这个目录在哪里呢
>>> import django
>>> django.__path__
['/Users/quke/PycharmProjects/myPythonEnv/lib/python2.7/site-packages/Django-1.10.5-py2.7.egg/django']
就在上面这个目录的contrib/admin/templates
我们先把后台管理界面的header改一下,编辑base_site.html,文件内容如下
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
{% block nav-global %}{% endblock %}
你可以直接把里面的字符串修改成你想要的
说一个我自己用过的admin的模板工具django suit 界面更好看 推荐
http://djangosuit.com/
django入门-自定义管理界面-part7的更多相关文章
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python Django 学习笔记(五)—— Django admin自动管理界面
1,激活管理界面 修改settings.py MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.c ...
- python学习笔记--Django入门四 管理站点
上一节 Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分. django.contrib 包 Django自动管理工具是djang ...
- Django入门--自定义过滤器与标签
---恢复内容开始--- 为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式: 1.在APP目录下配置:针对某个应用特定的自 ...
- 解决django的后台管理界面添加中文内容乱码问题
在使用django migrate功能时,默认数据库的字符集不是utf8. 是latin 1,然后在后台管理model时,不允许有中文字符插入 解决方案: 在使用migrate建库之前先把数据库建立起 ...
- Django笔记 —— Admin(Django站点管理界面)
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django 入门范例
1. Django 介绍 2. Django 环境搭建 3. 模型(Model) 4. 站点管理 5. 视图(View) 6. 模板(Template) 1. Django 介绍 MVC 模型 大部分 ...
- Django后台管理界面
之前的几篇记录了模板视图.模型等页面展示的相关内容,这篇主要写一下后台admin管理界面的内容. 激活管理界面 Django管理站点完全是可选择的,之前我们是把这些功能给屏蔽掉了.记得上篇中Djang ...
- django中怎么使用自定义管理后台xadmin
django中怎么使用自定义管理后台xadmin 2018年05月19日 15:48:08 LH_python 阅读数:1001 首先创建基本的django项目,配置好基本的model ,url, ...
随机推荐
- Python_04-字符串操作
1 字符串的运算 字符串是程序中经常使用的元素,字符串的运算也很多,包括连接两个字符串,取一个字符串中的一部分,称为取子字符串,大小写转换,字符串与数值的转换等. 1.1 字符串的连接 ...
- react-native react-navigation的用法
react-navigation升级了, 看这个: react-navigation 3.x版本的使用 一.问题背景 react-navigation是react-native官方推荐的,基于Java ...
- Django基础学习七之如何配置django+mysql
很久没有更新博客了,也有段时间没有持续性的学习了,感觉堕落了,今天继续开始学习吧 今天主要来学习一下在django下配置mysql的数据库和使用admin用户管理数据库 1.在project中的set ...
- .NET Reflector v9.0.1.318(包含注册机)
下载 程序员的基础教程:菜鸟程序员
- Efficient algorithms for polyploid haplotype phasing 多倍体单体型分型的有效算法
背景:单倍型的推断,或沿着相同染色体的等位基因序列,是遗传学中的基本问题,并且是许多分析的关键组分,包括混合物图谱,通过下降和插补识别身份区域. 基于测序读数的单倍型定相引起了很多关注. 已经广泛研究 ...
- Tomcat8 配置APR模式
首先说明下tomcat connector运行的3中模式及区别: 1)bio 默认的模式,同步阻塞,性能非常低下,没有经过任何优化处理和支持. 2)nio 同步非阻塞,利用java的异步io护理技术 ...
- [在职软件工程]基于CMMI的软件工程教程
第1章 软件工程基础 1.1软件工程基本原理 a.按照软件生命周期的阶段划分制定计划,严格依据计划进行管理 项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划 b.坚持进行阶 ...
- 通过 cygwin64 自己编译对应的 Tera Term cyglaunch.exe
步骤如下: 将 cygterm+.tar.gz解压到任意目录,当然要cygwin容易操作.(本例直接放到$HOME目录下,启动cygwin后的默认目录,如果之前没有更改的话) 将 Makefile 中 ...
- spring mvc 数据回显
1.spring mvc自动将传入的pojo数据存入request域 request中的key是该pojo类名,首字母小写. JSP controller 第一次访问user.jsp 填写表单 点击提 ...
- 企业搜索引擎开发之连接器connector(二十六)
连接器通过监视器对象DocumentSnapshotRepositoryMonitor从上文提到的仓库对象SnapshotRepository(数据库仓库为DBSnapshotRepository)中 ...