本文是自己学习做的笔记,如有雷同纯属巧合,如有问题请指出,谢谢!
基于环境Ubuntu16.04
python3.6
Django 2.07
二、管理站点的配置
创建一个管理员用户
python manage.py createsuperuser 按照提示输入用户名、邮箱、密码
然后通过127.0.0.1:8000/admin进行访问输入上面的用户名密码完成登陆
更改settings里面的LANGUAGE-CODE 改为zh-hans将网页变为中文网页
在admin里面通过admin.site.register(表格)可以在后台添加表
可以在后台时时增删改查的功能(方便)
在模型类里面加上 def __str__(self)方法可以让列表的相应信息显示在网页中
可能会出错是因为编码的问题 return 列名.encode("utf-8")如果报错了就这么改
但是好像现在django2.07已经不报错了。
定义后台显示页面的样式
注意导入同文件夹下自定义的库时,python3为from .models import * 这个.不能少
class QuestionAdmin(admin.ModelAdmin):
……………………
admin.site.register(Question, QuestionAdmin)
QuestionAdmin显示方式的类 Question表示需要注册的类,例如BookInfo
页列表属性:
在admin.py中定义一个界面的类, 类里面写变量即可不用加self.
List_display = ['列名1', '列名2', '列名3'] 显示字段,关系到查询时候的先后顺序
list_filter = ['列名1'] 用于在边上显示过滤器(按照列名1进行过滤) 一般用来过滤时间好像比较好
search_fields = ['列名2'] 在上侧出现按照(列名2)进行搜索的搜索框
list_per_page = 10 分页,出现在下侧
添加修改页属性
fieldsets = [
('basic', {'fields': ['列名1', '列名2',……]})
('more', {'fields': ['列名3', '列名4', ……]})
]
这些列一定要在你的model类里面存在才行。
修改添加页修改页内的属性,按照上面定义的类别来进行分类(给添加页和删除页分类)
关联对象的操作:
例如:肯德基里面有很多产品,我们在添加肯德基这家店的时候,还能同时添加其下的产品(肯德基和产品之间是一对多的关系)
class ProductInfo1(admin.StackedInline): # 这里是stackedInline是线性添加的 如果要表格添加的可以继承admin.TabularInline
model = 产品的类1
extra = 2
class ProductInfo2(admin.StackedInline): # 这里是stackedInline
model = 产品的类2
extra = 3 # 每次可以添加两个附属产品,希望添加的数据值
class KFCAdmin(admin.ModelAdmin):
……
inlines = [ProductInfo1, ProductInfo2] # 这里可以嵌入多个之间用逗号分隔
工程的设计流程:(后端部分)
1-设计工程 django-admin startproject
2-生成app并添加到工程 python manage.py startapp
3-编写模型类 (主要是设置数据库中表的结构类型)
4-admin类修改页面属性 加入关联对象,,修改显示结构,添加搜索框和过滤器等
4-注册模型类到应用中 admin.site.register(模型类, admin类)
4-根据模型类生成迁移文件 python manage.py makemigrations
5-生成迁移 python manage.py migrate
6-启动服务器 python manage.py runserver
Admin使用的流程
1-创建用户账户密码 : python manage.py createsuperuser
2-把模型类添加到admin里面(在注册时创建一个装饰的类,注册的时候把修改模型一起注册) (from .models import *)
3-通过python manage.py runserver 端口号 # 运行网页
4-通过127.0.0.1:端口号\admin来进入网页