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

管理页面(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文件作为模板,该目录下的所有模板都可以被修改覆盖。修改模板可按如下步骤来做。

1. 新建文件夹templates

Django虽然不限制这个文件夹的位置,但最好根据惯例放在有manage.py的那个目录下。

2. 设置模板路径

修改实际工程目录下的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',
            ],
        },
    },
]
3. 新建同名html模板修改覆盖

例如:只想要修改管理页面的名称,新建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 2.7.9
  • Django 1.8.1

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值