文章目录[隐藏]
自定义管理页面
- 属性说明
- 列表页属性
list_display
显示字段list_filter
过滤字段search_fields
查找字段list_per_page
分页(每页几条)
- 添加、修改页属性
fields
修改属性先后顺序fieldsets
给属性分组- 注意:
fields
和fieldsets
不能同时使用
- 列表页属性
- 关联对象
- 需求: 在创建班级时,可以直接添加几个学生。
# 在创建班级时,可以直接添加2个学生。
class StudentsInfo(admin.TabularInline):
# 也可以继承StackdInline,竖排显示。
# class StudentsInfo(admin.StackedInline)
model = Students
extra = 2
class GradesAdmin(admin.ModelAdmin):
# 加两行
inlines = [StudentsInfo]
- 执行动作位置
-
test case
class StudentAdmin(admin.ModelAdmin):
# 替换列表显示属性
def gender(self):
if self.sgender:
return "男"
else:
return "女"
# 设置列表列属性名称
gender.short_description = "性别"
# 列表页属性
list_display = ['pk', 'sname', 'sage',gender, 'scontend', 'isDelete', 'sgrade']
list_filter = ['sname']
search_fields = ['sname']
list_per_page = 2
# 添加、修改页属性
fieldsets = [
("num", {"fields": ['sage']}),
("base", {"fields": ['sname', 'scontend', 'isDelete', 'sgrade']}),
]
admin.site.register(Students, StudentAdmin)
使用装饰器完成注册
# 装饰器注册
@admin.register(Students)
class StudentAdmin(admin.ModelAdmin):
# 替换列表显示属性
def gender(self):
if self.sgender:
return "男" else:
return "女"
...
视图的基本使用
概述
- 在
Django
中,视图对Web请求进行回应 - 视图就是一个函数,在
views.py
中进行定义
定义视图
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the myApp index.")
配置URL
- 修改Project目录下的
urls.py
文件
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^', include('myApp.urls')),
]
- 在应用创建一个
urls.py
文件
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
模板的基本使用
概述
- 模板是HTML页面,可以根据视图中传递过来的数据进行填充
创建模板目录
- 在创建一个
templates
,一般放到和应用的同级目录,也可以放到应用下的统计目录
设置模板路径
# settings.py
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',
],
},
},
]
在templates路径下创建html文件
模板语法
- grammer1
{{输出值,可以是变量,一个是对象.属性}}
- grammer2
{%执行代码段%}
- test case
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>班级信息</title>
</head>
<body>
<h1>班级信息列表</h1>
<ul>
{%for grade in grades%}
<li>
<a href="#">{{grade.gname}}</a>
</li>
{%endfor%}
</ul>
</body>
</html>
配置url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(\d+)/(\d+)$', views.detail, name='detail'), # () is a group,给视图传参了
url(r'^grades/$', views.grades, name='grades'),
]
配置views
def grades(request):
# get data
gradesList = Grades.objects.all()
# send data to templates
# 将数据传递给模板,模板在渲染页面,模板将渲染好的页面返回给浏览器
return render(request, 'myApp/grades.html', {'grades': gradesList})