在前序配置工作完成之后,就可以正式开始启动我们的服务器,这是一个django提供的轻量级服务器,仅限于开发调试,在文档中我看到一句话(“我们是web框架的专家,但并非web服务器专家”)。
python manage.py runserver ip:port #(ip和端口可以不写,默认为本机以及8000端口)
概述:关于数据库内容的发布,以及复制增,删,改,查
python manage.py createsuperuser
命令依次输入用户名,邮箱,密码LANGUAGE_CODE = 'zh-Hans' TIME_ZONE='Asia/shanghai'
from django.contrib import admin
# Register your models here.
from .models import Grades, Students # (自行引入)
# 关联创建(当创建班级表时附带要创建两个学生信息)
class StudentsInfo(admin.TabularInline): # 也可以用admin.StackedInline
model = Students
extra = 2
# 注册
class GradesAdmin(admin.ModelAdmin):
inlines = [StudentsInfo] # 关联创建时使用
# 列表页属性
list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum', 'isDelete'] # 设置要显示的字段
list_filter = ['gname'] # 设置过滤器
search_fields = ['gname'] # 设置搜索器
list_per_page = 5 # 设置每页显示的条数
# 添加、修改页属性
fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete'] # 修改添加顺序
'''
fieldsets = [ # 给添加的属性进行分组
("num", {"fields": ['ggirlnum', 'gboynum']}),
("base", {"fields": ['gname', 'gdate', 'isDelete']}),
]
'''
# 执行动作位置
actions_on_top = False
actions_on_bottom = True
admin.site.register(Grades, GradesAdmin)
# 用装饰器注册(可以删除最下面的register注册用装饰器)
# @admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
# 用于对布尔值进行判断,逻辑分析后输出
def gender(self):
if self.sgender:
return "男"
else:
return "女"
# 对于字段名进行重定义
gender.short_description = "性别"
# 列表页属性
list_display = ['pk', 'sname', 'sage', gender, 'scontend', 'sgrade', 'isDelete'] # 设置要显示的字段
list_per_page = 2 # 设置每页显示的条数
# 添加、修改页属性
fields = [] # 修改添加顺序
'''
fieldsets = []
'''
admin.site.register(Students, StudentsAdmin)
首先我们将要管理的表导入,然后创建类来注册表,要注意:
# 列表页属性
list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum', 'isDelete'] # 设置要显示的字段
list_filter = ['gname'] # 设置过滤器
search_fields = ['gname'] # 设置搜索器
list_per_page = 5 # 设置每页显示的条数
# 添加、修改页属性
fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete'] # 修改添加顺序
'''
fieldsets = [ # 给添加的属性进行分组
("num", {"fields": ['ggirlnum', 'gboynum']}),
("base", {"fields": ['gname', 'gdate', 'isDelete']}),
]
'''
这一部分是对于表单的显示约束以及添加时约束,具体功能已注释于代码当中,在限定增加表数据的时候,fields和fieldsets只能二选一进行限制。
# 关联创建(当创建班级表时附带要创建两个学生信息)
class StudentsInfo(admin.TabularInline): # 也可以用admin.StackedInline
model = Students # 对于要关联的表进行标注
extra = 2 # 对于要额外创建的个数进行限制
先创建关联类,并且在班级注册类当中加入inlines = [StudentsInfo] # 关联创建时使用
def gender(self):
if self.sgender:
return "男"
else:
return "女"
# 对于字段名进行重定义
gender.short_description = "性别"
将这段代码写入学生表注册当中,可以将布尔值转换成我们想要的结果进行展示,并更换该字段的定义名进行展示。
# 执行动作位置
actions_on_top = False
actions_on_bottom = True
from django.http import HttpResponse
再编写类进行定义。def index (request):
return HttpResponse("You are so cute!")
from django.conf.urls import include
,并在URLPATTERNS数组中添加path("",include('myAPP.urls'))
在app的应用目录下创建一个urls.py文件中完成以下操作:from django.conf.urls import url
from . import views
urlpatterns=[
path("",views.index)
]
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("you are so cute!")
# 查看班级表视图
from .models import Grades
def grades(request):
# 去模板里取数据
gradesList = Grades.objects.all()
# 将数据传递给模板,模板在渲染页面,将渲染好的页面返回浏览器
return render(request, 'myAPP/grades.html', {"grades": gradesList})
# 查看学生表视图
from .models import Students
def students(request):
# 去模板里取数据
studentsList = Students.objects.all()
# 将数据传递给模板,模板再渲染页面,将渲染好的页面返回浏览器
return render(request, 'myAPP/students.html', {"students": studentsList})
def gradesStudents(request,num):
grade = Grades.objects.get(pk=num)
studentsList = grade.students_set.all()
return render(request, 'myAPP/students.html', {"students": studentsList})
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns = [
url(r'^$', views.index),
path('grades', views.grades),
path('students', views.students),
path('grades/<int:num>', views.gradesStudents) # 这里的num要与视图中定义的函数形参名字一致
]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生页面展示</title>
</head>
<body>
<h1>学生页面展示</h1>
<ul>
{% for student in students %}
<li>{{ student.sname }}--{{ student.scontend }}</li>
{% endfor %}
</ul>
</body>
</html>
本文地址:https://blog.csdn.net/baldicoot_/article/details/107158570
如对本文有疑问, 点击进行留言回复!!
老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Release释放操作
老猿学5G扫盲贴:中国移动5G融合计费漫游计费架构和路由方案
老猿学5G扫盲贴:与用户和终端相关的名词UE、SUPI、GPSI、PEI
三星以核心技术优势持续更新折叠手机,华为缺乏自主技术无力应对
基于OpenCV+Python的均值滤波,高斯滤波,中值滤波,双边滤波
网友评论