Django学习笔记--管理页面的创建与配置
2015-05-13 14:34
776 查看
管理页面(admin site)创建与配置
Django 提供了一套自动生成与配置管理页面的方法,经过一些简单配置就可使用。默认管理页面地址为localhost:8000/admin1 .按如下命令新建一个管理员,根据交互提示填写相关信息
$ python manage.py createsuperuser
2. 注册model到管理页面,使管理页面能够操控model层
修改app/admin.py文件如下:from django.contrib import admin from .models import Question admin.site.register(Question)
注:一个web app 在setting.py向Django注册后,Django会根据其目录下的admin.py中的model的field产生对应的HTML输入组件(input widget)。
3. 修改model field 显示效果
修改显示顺序:app/admin.py中创建一个类继承admin.ModelAdmin。创建一个List,排列model field名称,用关键字”fiedls”做其引用,Django会根据List的顺序在管理页面上显示。
from django.contrib import admin from .models import Question class QuestionAdmin(admin.ModelAdmin): fields = ['pub_date', 'question_text'] admin.site.register(Question, QuestionAdmin)
创建field分组
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)
4. 注册与已添加model有关系的model
比如Choie这个model中有 qeustion = model.ForeignKey(Question),这表明Question与Choice存在一定的关系。独立添加
像上述添加Question model一样直接添加,Choice独立。
Inline关联添加
Choice不独立,例如下述,每个Question中添加Choice
创建一个继承Inline的类,用关键字”modle”指定添加的model,用关键字”extra”指定添加的数量。
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)
Inline类分为两类,其中StackedInline占用屏幕空间较大,TabularInline占用屏幕空间较小。
5. 其他一些管理页面的设置方法
list_display: 同时显示model的各个field信息list_display=('question_text','pub_date','was_published_recently')
list_filter: 添加过滤器
list_filter=['pub_date']
search_fields: 添加搜索框
search_fields=['question_text']
在继承admin.ModelAdin的类中直接添加即可
6. 修改改管理页面的模板
如果想要给管理页面换一种风格,可修改其模板。默认状态Django使用其源代码目录下ango/contrib/admin/templates下的html文件作为模板,该目录下的所有模板都可以被修改覆盖。修改模板可按如下步骤来做。[b]1. 新建文件夹templates[/b]
Django虽然不限制这个文件夹的位置,但最好根据惯例放在有manage.py的那个目录下。
[b]2. 设置模板路径[/b]
修改实际工程目录下的setting.py文件,按如下添加DIRS项
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], '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', ], }, }, ]
[b]3. 新建同名html模板修改覆盖[/b]
例如:只想要修改管理页面的名称,新建base_stie.html,复制Dango源代码目录下,jango/contrib/admin/templates/base_site.html。在block branding这块直接用想要的名称替换{{ site_header|default:_(‘Django administration’) }}这个整体,例如
{% block branding %} <h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1> {% endblock %}
版本:
Python4000
2.7.9
Django 1.8.1
参考资料:
https://docs.djangoproject.com/en/1.8/intro/tutorial02/相关文章推荐
- Django学习笔记(二)创建一个简单页面
- 菜鸡的Django学习笔记(二)如何创建第一个博客页面
- Django学习笔记3 用ModelForm创建基于表单的页面
- Django框架学习笔记(1.安装创建初识)
- Django学习笔记1-创建Django项目
- Django学习笔记2 模板继承、添加页面
- 【Servlet学习笔记-1】使用Eclipse创建第一个Servlet并在html页面调用示例
- 第二章--第一节:软件的生命周期和配置管理(软件构造学习笔记)
- 微信公众号创建与管理学习笔记
- Django 开发学习笔记(3)- 编写自定义的页面
- Django 开发学习笔记(6)- 开发博客主页和所有话题列表页面
- Django 开发学习笔记(7)- 开发特定主题显示的页面
- Django 开发学习笔记(8)- 开发表单页面,让用户添加内容
- Django学习笔记(一)--安装与创建工程
- Django学习笔记(四)--admin的配置与应用
- Spring boot 学习笔记(1)——hello world创建,属性application.properties、 yml配置
- Java框架spring 学习笔记(十):bean管理(注解和配置文件混合使用)
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
- django学习——如何配置404、500页面
- Django学习2--创建应用程序、models模型管理、系统管理后台