Django模型操作与ORM查询教程
"本文档是关于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开发中非常基础且重要的知识点。
class Student(models.Model):
stuName=models.CharField(max_length=20)
2、生成迁移文件
python manage.py makemigrations
3、执行迁移(生成数据库表)
python manage.py migrate
4、视图
from django.shortcuts import render,HttpResponse
# Create your views here.
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())
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 6
- 资源: 208
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构