4.Django入门:教程-管理站点
来源:互联网 发布:易企cms怎么换模板 编辑:程序博客网 时间:2024/06/04 17:56
创建一个Django自动生成的管理界面
1.创建管理员用户
python manage.py createsuperuser
2.启动开发服务器
python manage.py runserver
3.进入管理站点
http://127.0.0.1:8000/admin/
用管理员用户登录
4.让模型在管理站点中可编辑
编辑polls/admin.py文件
from django.contrib import adminfrom .models import Questionadmin.site.register(Question)
5.自定义管理表单
修改一个对象的管理选项的步骤:创建一个模型管理对象(class),然后把该对象(class名)作为第二个参数传入admin.site.register()
编辑polls/admin.py
from django.contrib import adminfrom .models import Questionclass QuestionAdmin(admin.ModelAdmin): fields = ['pub_date', 'question_text']admin.site.register(Question, QuestionAdmin)
有许多字段的表单,把表单分割成字段集:
from django.contrib import adminfrom .models import Questionclass QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date']}), ]admin.site.register(Question, QuestionAdmin)
可以任意地为每个字段集指定HTML样式类:
from django.contrib import adminfrom .models import Questionclass QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ]admin.site.register(Question, QuestionAdmin)
6.添加关联对象
有两种方法添加关联对象
编辑polls/admin.py
(1)方法一
from django.contrib import adminfrom .models import Choice, Question# ...admin.site.register(Choice)
(2)方法二
from django.contrib import adminfrom .models import Choice, Questionclass ChoiceInline(admin.StackedInline): model = Choice extra = 3class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline]admin.site.register(Question, QuestionAdmin)
Django提供了一种以表格的形式显示内嵌的相关联对象的方法, 你只需改变一下ChoiceInline 的声明
class ChoiceInline(admin.TabularInline): #...
7.自定义管理界面中的变更列表
默认地,Django显示每个对象的str()返回的内容。
使用list_display 选项来实现这个功能,它是一个要显示的字段名称的元组,在对象的变更列表页面上作为列显示:
class QuestionAdmin(admin.ModelAdmin): # ... list_display = ('question_text', 'pub_date')
Django不支持按照随便一个方法的输出进行排序。另外, 头部默认是这个方法的名字(用空格取代下划线),并且这列的每一项内容都是用返回值的字符串形式表示。
通过给这个方法(在polls/models.py中)添加一些属性来改进
class Question(models.Model): # ... def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) was_published_recently.admin_order_field = 'pub_date' was_published_recently.boolean = True was_published_recently.short_description = 'Published recently?'
使用list_filter来添加过滤器
list_filter = ['pub_date']
添加搜索功能
search_fields = ['question_text']
8.自定义管理站点的外观
(1)自定义项目的模板
- 在你项目的文件夹内(包含 manage.py的目录)创建一个templates目录
- 打开你的配置文件(记住是mysite/settings.py)在TEMPLATES 设置中添加一个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', ], }, },]
DIRS 是加载Django模板时检查的一个文件系统目录列表;它是一个搜索路径。
- 在templates下创建一个名为admin的文件夹,然后从Django安装的原目录下(目录为django/contrib/admin/templates)将模板页面的源文件admin/base_site.html拷贝到这个文件夹里
- 然后,只需编辑该文件并替换{{ site_header|default:_(‘Django administration’) }} (包括花括号)为你认为合适的自己站点的名称。
{% block branding %}<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>{% endblock %}
- 要覆盖一个模板文件,只需要做和覆盖base_site.html相同的操作就行 —— 将它从默认的目录拷贝到你自定义的目录中,然后修改它。
(2)自定义应用的模板
由于DIRS默认是空的,Django是怎么找到默认的管理站点模板的?答案是,由于APP_DIRS设置为True,Django会自动地在每个应用包下面查找一个templates/子目录,留作备用。
9.自定义管理站点的首页面
默认情况下,首页面显示所有位于INSTALLED_APPS中且已经使用管理站点应用注册过的应用,这些应用按照字母顺序进行显示。
需要自定义的模板文件是 admin/index.html。 (从默认的目录拷贝到自定义的目录中)。
编辑这个文件,你将看到它有一个叫做app_list的变量。这个变量包含安装的所有Django应用。 你可以选择不像默认模板中那样使用它,而是以你认为最好的方式硬编码链接到每个对象自己的管理页面。
- 4.Django入门:教程-管理站点
- python(django入门03)——Django站点管理
- Django笔记(管理站点)
- Django站点管理
- Django站点管理--ModelAdmin
- django站点管理1
- Django管理站点
- Django 站点管理(Admin)
- django站点管理
- django站点管理
- Django Admin站点管理总结
- django admin站点管理 示例
- 第六章 Django管理站点
- 第六章 Django站点管理
- 第六章 Django站点管理
- Django学习笔记-站点管理
- Django 开发-管理站点管理应用数据
- Django 站点部署和管理常用命令
- 关于 验证码 Ajax,jQuery,Cookie与Session 总结
- mavn的安装与本地仓库的搭建
- 解决:angular js模板中无法使用ueditor的问题
- Beware of the stopwatch
- 10:数字组合
- 4.Django入门:教程-管理站点
- sonar常见错误以及处理方案
- C#委托的测试
- Struts2学习(1):Struts2框架结构详解
- Tomcat7.0安装配置详细(图文)
- #18.2#3D数学-向量(Vector)
- mybatis的设置
- 设计模式之适配器模式
- Unity3D 自定义UI组件画圆、圆弧、扇形