Django 自带的ORM增删改查
通过Django来对数据库进行增删改查
1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化:
2 创建在django项目里面的settings里面添加app程序()在settings里面的INSTALLED_APPS里面)
3 python manage.py makemigrations
4 python manage.py migrate
django 常用命令:
django :
第一条命令是创建项目名,第二条是创建app,第三个同步(创建)数据库
python3 manage.py startproject project_name
python3 manage.py startapp app_name
python3 manage.py syncdb
拿models里面的一个类举例:
我们先看models创建一个数据库的方法:
class WebGroup(models.Model): name = models.CharField(max_length=64) brief = models.CharField(max_length=255,blank=True,null=True) owner = models.ForeignKey(UserProfile) admins = models.ManyToManyField(UserProfile,blank=True,related_name='group_admins') members = models.ManyToManyField(UserProfile,blank=True,related_name='group_members') max_members = models.IntegerField(default=200) def __str__(self): return self.name
同步数据库
1 2 3 4 5 6 7 8 | python manage.py makemigrations python manage.py migrate 本人使用的是django1. 9.5 版本 2. 创建超级管理员 python manage.py createsuperuser 3. 运行django python manage.py runserver 8000 |
1 增加数据
我们在views里面随便定义一个方法名,然后下如以下代码 ,写入以下代码:
1 2 3 4 5 | if request.method = = "POST" : input_em = request.POST[ 'em' ] # em 和 pwd都是和form表单里面的一一对应 input_pw = request.POST[ 'pwd' ] print (input_pw,input_em) models.UserInfo.objects.create(email = input_em, pwd = input_pw) #models调用的是先前创建好的数据库 |
当出现这个报错提示的时候,我们应该在html页面上的form表单里面添加这行内容: {% csrf_token %}
1 2 3 4 5 6 | <form action = "/index/" method = "post" > { % csrf_token % } < input type = "text" name = "em" / > < input type = "text" name = "pwd" / > < input type = "submit" value = "添加" / > < / form> |
2 删除数据
1 | models.UserInfo.objects. filter (email = input_em).delete() |
3 更改数据:
1 | models.UserInfo.objects. filter (email = input_em).update(pwd = 'nihao' ) |
4 查看数据:
我们需要在HTML页面里嵌套jinja2的代码,下面代码能够在表单里面根据后台数据库的内容来展示,代码如下:
# 前端代码的jinja2语法如下 {% for line in user_info_list %} # user_info_list 实际上就是从models里面获取的对象。 <tr> <td>{{ line.email }}</td> # 每个遍历出来的对象都有emmail这个属性,因为我们在定义这个表的时候就定义了email字段 <td>{{ line.pwd }}</td> </tr> {% endfor %}
后端django,views里面的方法
def index(request): # 数据库获取数据,数据和HTML渲染 from app01 import models user_info_list = models.UserInfo.objects.all() return render(request,'index.html',{'user_info_list':user_info_list})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构