您的位置:首页 > 编程语言 > Go语言

Django学习笔记--管理页面的创建与配置

2015-05-13 14:34 776 查看

管理页面(admin site)创建与配置

Django 提供了一套自动生成与配置管理页面的方法,经过一些简单配置就可使用。默认管理页面地址为localhost:8000/admin

1 .按如下命令新建一个管理员,根据交互提示填写相关信息

$ 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 %}


版本:

Python
4000
2.7.9

Django 1.8.1

参考资料:

https://docs.djangoproject.com/en/1.8/intro/tutorial02/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django python web框架