django基础之views基础和admin管理

views基础

views 常用的三个返回方法 render HttpResponse redirect

render

通过模板语言的渲染,将 html 返回给用户

HttpResponse

一般是对页面部分数据的填充,返回部分的字符串数据

redirect

请求 url 重定向

应用场景区别

  1. 数据库返回的 queryset list 数据集,通过 render 渲染 templates 直接返回 html 页面
  2. 通过按钮调用 js 代码向 url 发送请求,然后通过 urls 定位到 views 的处理逻辑,得到需要的数据,通过 HttpResponse 返回。若是单个数据,则字符串返回,若多个数据则通过 json返回
  3. 请求重定向 url ,重新通过 urls 定位

admin管理页面

admin 页面用于从数读取数据,呈现在页面上进行管理。

登录

在 Terminal 创建登录用户

1
python manage.py createsuperuser

根据提示信息输入用户名和密码即可。
启动 django 项目的服务,访问 http://127.0.0.1:8000/admin 登录即可。
默认情况下展示 django 默认的数据库表信息
django-admin-default

自定义表展示

首先创建表

demo/models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
from 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
2
python manage.py makemigrations
python manage.y migrate

然后注册

demo/admin.py

1
2
3
4
5
6
from django.contrib import admin
from demo import models

admin.site.register(models.UserInfo)
admin.site.register(models.School)
admin.site.register(models.Class)

重新访问就会显示应用 demo 新建的数据库表
django-admin-demo
此时存在一个问题,选择一个表进去显示的都是 object而不是对应的表数据,选择对应的 object 才能看到数据。
django-admin-object
修改如下
demo/admin.py

1
2
3
4
5
6
7
8
9
10
11
12
from 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)

再次访问效果如下
django-admin-data

  • 数据表多对多关系通过页面删除数据,将会删除所有关联数据,属于级联删除
  • 注册也可以写在其他应用的 admin.py 文件中,只要应用在项目的 settings.py 注册即可。

Recommended Posts