Django模型操作与ORM查询教程
需积分: 9 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开发中非常基础且重要的知识点。
2024-07-19 上传
2024-06-20 上传
点击了解资源详情
2024-07-20 上传
2020-06-06 上传
点击了解资源详情
2019-07-24 上传
点击了解资源详情
点击了解资源详情
lswliushengwang
- 粉丝: 6
- 资源: 208
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率