Django模型操作与ORM查询教程

需积分: 9 0 下载量 4 浏览量 更新于2024-09-02 收藏 4KB TXT 举报
"本文档是关于Django框架的总结,主要涵盖了模型定义、数据库迁移、视图函数以及模板渲染,并简单介绍了Django的ORM查询方式。" 在Django框架中,模型(Model)是数据表的抽象,用于定义数据库中的表结构。例如,创建一个名为`Student`的模型,包含一个CharField类型的`stuName`字段,最大长度为20个字符: ```python class Student(models.Model): stuName = models.CharField(max_length=20) ``` 在模型定义完成后,需要执行数据库迁移操作来同步到数据库。首先,运行`python manage.py makemigrations`命令创建迁移文件,这会检测到模型的变化并生成相应的迁移脚本。然后,执行`python manage.py migrate`来应用这些迁移,更新数据库结构。 Django的视图(View)负责处理HTTP请求并返回响应。例如,`index`视图使用`HttpResponse`返回简单的"ok",而`index2`视图则将用户重定向到一个HTML模板。`index3`视图通过`Student.objects.all()`获取所有学生对象,并使用`locals()`传递给模板,以便在模板中访问这些数据: ```python from django.shortcuts import render, HttpResponse from app01.models import Student def index(req): Student.objects.create(stuName='bbb') return HttpResponse("ok") def index2(req): return render(req, "index.html") def index3(req): stus = Student.objects.all() return render(req, "index.html", locals()) ``` 模板(Template)是HTML文件,其中可以嵌入Django模板语言(DTL)。如示例中的`index.html`,展示了如何展示学生列表,通过`{{ stus }}`显示所有学生,`{% for stu in stus %}`循环遍历每个学生并显示其`id`和`stuName`: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>index</h1> {{ stus }}<hr/> {% for stu in stus %} {{ stu.id }}---{{ stu.stuName }}<br/> {% endfor %} </body> </html> ``` Django的ORM(Object-Relational Mapping)允许开发者以Python对象的方式进行数据库查询。例如: - `filter()`方法用于筛选数据,如`models.UserInfo.objects.filter(name='zekai')`筛选出名字为'zekai'的记录。 - `exclude()`方法排除特定条件的数据,如`models.UserInfo.objects.exclude(id=4)`排除id为4的记录。 - 使用`__`操作符可以进行比较查询,如`id__gt`表示id大于,`id__gte`表示id大于等于,`id__lte`表示id小于等于,`id__lt`表示id小于。 以上内容涵盖了Django模型的创建、数据库迁移、视图的编写、模板的使用以及ORM查询的基本操作,这些都是Django开发中非常基础且重要的知识点。