18 静态文件
自定义应用的外观
样式表的存放路径polls/static/polls/css/style.css
li a{
color:green;}
html页面中添加
{% load static%}
<linkrel="stylesheet"type="text/css"href="{%static 'polls/css/style.css'%}"/>
添加背景图片
新建polls/static/polls/images/目录,添加background.gif图片
修改样式表
body{
background:white url("../images/background.gif")no-repeat center center fixed;-webkit-background-size:cover;-moz-background-size: cover;-o-background-size: cover;background-size: cover; }
19自定义admin站点
自定义表单
之前是通过在admin.py文件中注册
admin.site.register(models.Question)
admin.site.register(models.Choice)
如果想自定义该页面的外观和工作方式,需要在注册的时候设置
from django.contrib import admin
from polls importmodels# Register your models here.'''模型管理类'''class QuestionAdmin(admin.ModelAdmin):#在页面显示的时候,让时间字段放到问题字段前fields =['pub_date','question_text']#注册时传递模型管理类admin.site.register(models.Question,QuestionAdmin) admin.site.register(models.Choice)
添加关系对象
在创建question对象的时候可以直接添加choice
#choice对象将在question管理页面进行编辑,默认可以添加三个
修改polls/admin.py
from django.contrib import admin
from .models importChoice, Question# Register your models here.'''模型管理类'''# class QuestionAdmin(admin.ModelAdmin):# 让时间字段放到问题字段前# fields =['pub_date','question_text']# 注册时传递模型管理类# admin.site.register(models.Question,QuestionAdmin)# admin.site.register(models.Choice)#也可以用扁平化的显示方式TabularInlineclass 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)
可以看到在add question页面中可以添加三个choice与之关联
Add another Choices 可以继续添加关联
也可以设置其为扁平化的显示方式:
Polls/admin.py
#扁平化的显示方式class ChoiceInline(admin.TabularInline):
自定义admin change list
也就是看到的问题列表页,可以设置其显示的内容,将对象的所有属性都显示出来
class QuestionAdmin(admin.ModelAdmin):
#设置change_list要显示的内容 list_display = ('question_text','pub_date', 'was_published_recently') fieldsets = [ (None, { 'fields': ['question_text']}), ('Date information', { 'fields': ['pub_date'],'classes': ['collapse']}), ] inlines = [ChoiceInline]
实现单击列标题进行排序
was_published_recently默认是不能排序,修改其显示方式
Model.py中添加如下
was_published_recently.admin_order_field ='pub_date'was_published_recently.boolean =Truewas_published_recently.short_description ='Published recently?'
添加过滤选择框
在admin.py中添加
list_filter = ['pub_date']
添加搜索功能:
Admin.py 中添加
search_fields = ['question_text']
定制admin外观
Manage.py 文件的同级目录下有一个templates目录,创建一个admin目录
修改mysite/settings.py文件
TEMPLATES = [
{ ... 'DIRS': [os.path.join(BASE_DIR,'templates')], ...}]
将源码目录下的django/contrib/admin/templates/admin下的base_site.html
放到刚才建好的admin目录下
{% extends "admin/base.html"%}
{% block title%}**站点管理{% endblock%} {% block branding%} <h1id="site-name"> <ahref="{%url 'admin:index'%}"> {# { { site_header|default:_('JKX administration') }} #} {#修改应用标题名称 #} **管理控制台 </a> </h1> {% endblock %} {% block nav-global%}{% endblock %}
定制应用模版
定制首页同上