views基础
views 常用的三个返回方法 render
HttpResponse
redirect
render
HttpResponse
一般是对页面部分数据的填充,返回部分的字符串数据
redirect
请求 url 重定向
应用场景区别
- 数据库返回的 queryset list 数据集,通过 render 渲染 templates 直接返回 html 页面
- 通过按钮调用 js 代码向 url 发送请求,然后通过 urls 定位到 views 的处理逻辑,得到需要的数据,通过 HttpResponse 返回。若是单个数据,则字符串返回,若多个数据则通过 json返回
- 请求重定向 url ,重新通过 urls 定位
admin管理页面
admin 页面用于从数读取数据,呈现在页面上进行管理。
登录
在 Terminal 创建登录用户1
python manage.py createsuperuser
根据提示信息输入用户名和密码即可。
启动 django 项目的服务,访问 http://127.0.0.1:8000/admin 登录即可。
默认情况下展示 django 默认的数据库表信息
自定义表展示
首先创建表
demo/models.py
1
2
3
4
5
6
7
8
9
10
11
12
13from django.db import models
class UserInfo(models.Model):
username=models.CharField(max_length=32, null=True)
password=models.CharField(max_length=32, null=True)
class School(models.Model):
schoolname=models.CharField(max_length=32, null=True)
schooltype=models.CharField(max_length=32, null=True)
class Class(models.Model):
classname=models.CharField(max_length=32, null=True)
classno=models.CharField(max_length=32, null=True)
在 Terminal 执行命令建表1
2python manage.py makemigrations
python manage.y migrate
然后注册
demo/admin.py
1
2
3
4
5
6from django.contrib import admin
from demo import models
admin.site.register(models.UserInfo)
admin.site.register(models.School)
admin.site.register(models.Class)
重新访问就会显示应用 demo 新建的数据库表
此时存在一个问题,选择一个表进去显示的都是 object
而不是对应的表数据,选择对应的 object 才能看到数据。
修改如下demo/admin.py
1
2
3
4
5
6
7
8
9
10
11
12from django.contrib import admin
from demo import models
class UserInfoAdmin(admin.ModelAdmin):
list_display = ("username", "password") # 显示表格的表头
search_fields = ("username",) # 设置搜索框允许搜索的字段
list_filter = ("username",) # 设置过滤器
ordering = ("-username",) # 排序字段, -表示倒序
admin.site.register(models.UserInfo, UserInfoAdmin)
admin.site.register(models.School)
admin.site.register(models.Class)
再次访问效果如下
- 数据表多对多关系通过页面删除数据,将会删除所有关联数据,属于级联删除
- 注册也可以写在其他应用的 admin.py 文件中,只要应用在项目的 settings.py 注册即可。