后台汉化
settings.py
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
后台标题和名称的修改
admin.py
admin.site.site_header = '后台管理'
admin.site.site_title = '后台管理title'
favicon.ico配置
找到django安装目录
$ python -c "import django;print(django.__path__)"
将默认模板contrib/admin/templates/admin/base_site.html
复制到/templates/admin/base_site.html
<link rel="icon" type="image.png" href="/static/img/favicon.ico">
添加后台logo
修改 /templates/admin/base_site.html
{% block branding %}
<img src="/static/img/xiaomi_logo.png" style="line-height: 40px; width: 40px;height: 40px;float: left;">
<h1 id="site-name" style="float: left;">
<a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a>
</h1>
{% endblock %}
查看sql执行日志
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}
}
后台显示数据
admin.py
from django.contrib import admin
# Register your models here.
from login.models import Members
from login.models import Types
# 装饰器注册
@admin.register(Members)
class MembersAdmin(admin.ModelAdmin):
# listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
list_display = ('name', 'sex', 'age', 'TEL', 'member_type')
# list_per_page设置每页显示多少条记录,默认是100条
list_per_page = 50
# ordering设置默认排序字段,负号表示降序排序
# ordering = ('-name',)
# 操作项功能显示位置设置,两个都为True则顶部和底部都显示
actions_on_top =True
actions_on_bottom = True
# 操作项功能显示选中项的数目
actions_selection_counter = True
# 字段为空值显示的内容
empty_value_display = ' -空白- '
# list_editable 设置默认可编辑字段(name默认不可编辑,因为它是一个链接,点击会进入修改页面)
list_editable = ['TEL', 'member_type',]
# fk_fields 设置显示外键字段
fk_fields = ('member_type',)
# 过滤器功能及能过滤的字段
list_filter = ('name', 'member_type')
# 搜索功能及能实现搜索的字段
search_fields = ('name', 'TEL', )
# 注册函数注册
admin.site.register(Types)
显示颜色
models.py
from django.db import models
from django.utils.html import format_html
class Members(models.Model):
name = models.CharField(max_length=20)
sex = models.CharField(max_length=2)
age = models.IntegerField(null=True)
def sex_color(self):
if self.sex == '男':
color = '#00F'
elif self.sex == '女':
color = '#F00'
else:
color = ''
return format_html(
'<span style="color: {}">{}</span>',
color,
self.sex,
)
admin.py修改显示
list_display = ('name', 'sex_color', 'age')