文章目录
- 属性说明 列表页属性 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.")
- 修改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', ], }, }, ]
-
- 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>
- 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'), ]
- def grades(request): # get data gradesList = Grades.objects.all() # send data to templates # 将数据传递给模板,模板在渲染页面,模板将渲染好的页面返回给浏览器 return render(request, 'myApp/grades.html', {'grades': gradesList})
- 属性说明
- 列表页属性
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)
- 列表页属性
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 "女"
...
# 装饰器注册
@admin.register(Students)
class StudentAdmin(admin.ModelAdmin):
# 替换列表显示属性
def gender(self):
if self.sgender:
return "男" else:
return "女"
...
- 在
Django中,视图对Web请求进行回应
- 视图就是一个函数,在
views.py中进行定义
Django中,视图对Web请求进行回应views.py中进行定义
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the myApp index.")
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the myApp index.")
- 修改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'),
]
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,一般放到和应用的同级目录,也可以放到应用下的统计目录
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',
],
},
},
]
# 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',
],
},
},
]
- 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>
{{输出值,可以是变量,一个是对象.属性}}
{%执行代码段%}
<!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>
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'),
]
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'),
]
def grades(request):
# get data
gradesList = Grades.objects.all()
# send data to templates
# 将数据传递给模板,模板在渲染页面,模板将渲染好的页面返回给浏览器
return render(request, 'myApp/grades.html', {'grades': gradesList})
def grades(request):
# get data
gradesList = Grades.objects.all()
# send data to templates
# 将数据传递给模板,模板在渲染页面,模板将渲染好的页面返回给浏览器
return render(request, 'myApp/grades.html', {'grades': gradesList})
