DjangoORM基本增删改查
1. 下载并且安装navicat premium,连接到db.sqlite3数据库。

2.先在urls.py中增加一条对应关系,专门用来做测试。

3.此时models.py中的代码如下:

4. 对于ORM,如果你想对这个表增加一条数据,得通过UserInfo 这个类去数据库里面去增加。
所以需要先把这个模块导入。from django.db import models

4. 往数据库中增加一条数据。方法1:
models.UserInfo.objects.create(username='root',password='123')

效果:

5. 往数据库中增加一条数据。方法2:(写成一个字典,是方法一的变形)
dic={'username':'eric','password':'666'}
models.UserInfo.objects.create(**dic)

6. 往数据库中增加一条数据。方法3:
obj=models.UserInfo(username='alex',password='123')
obj.save()
效果:
7.小结:
def orm(request):
#创建方法1
#models.UserInfo.objects.create(username='root',password='123')
# 创建方法2
#dic={'username':'eric','password':'666'}
#models.UserInfo.objects.create(**dic)
# 创建方法3
#obj=models.UserInfo(username='alex',password='123')
#obj.save()
8.查
现在数据库中有3条数据

result=models.UserInfo.objects.all()
#all表示把这个表中的所有数据都拿到。
# 返回的result是QuerySet类型的,这个类型是Django提供的。可以理解成QuerySet是个列表[]。
print(result)

9. 把列表中的信息打印出来。

10. filter就是where查询条件
result2 = models.UserInfo.objects.filter(username='root')
result2 = models.UserInfo.objects.filter(username='root',password='123') 表示and条件组合。
返回的也是一个列表类型,所有username='root' 的所有行的数据。

11.删除
#删除-所有数据
models.UserInfo.objects.all().delete()
#删除-某些数据
models.UserInfo.objects.filter(id=4).delete()
12.更新
#更新
models.UserInfo.objects.all().update(password=6669)
models.UserInfo.objects.filter(id=3).update(password=69)

13.总结,views.py中程序如下。

from django.shortcuts import render,HttpResponse,redirect # Create your views here.
# USER_DICT={
# 'k1':'root1',
# 'k2':'root2',
# 'k3':'root3',
# 'k4':'root4',
# } # USER_LIST=[
# {'name':'root'},
# {'name':'root'},
# {'name':'root'}
# ]
#
# {% for item in user_list %}
USER_DICT={
'1':{'name':'root1','email':'root@live.com'},
'2':{'name':'root2','email':'root@live.com'},
'3':{'name':'root3','email':'root@live.com'},
'4':{'name':'root4','email':'root@live.com'},
'5':{'name':'root5','email':'root@live.com'},
}
def index(request):
return render(request,'index.html',{'user_dict':USER_DICT}) def login(request):
if request.method=='GET':
return render(request,'login.html')
elif request.method=='POST':
#数据库中执行 select * from user where username='X' and password='Y'
return render(request,'login.html')
else:
# put,delete,head,option.....
return redirect('/index/') # def login(request):
# if request.method == 'GET':
# return render(request, 'login.html')
# elif request.method == 'POST':
# # radio
# # v1=request.POST.get('gender')
# # print(v1)
# # checkbox
# # v2=request.POST.getlist('favor')
# # print(v2)
# # v3=request.POST.get('fafafa')
# # print(v3)
# obj = request.FILES.get('fafafa')
# print(obj, type(obj), obj.name)
# import os
# file_path = os.path.join('upload', obj.name)
# f = open(file_path, mode="wb")
# for i in obj.chunks():
# f.write(i)
# f.close()
#
# return render(request, 'login.html')
# else:
# # put,delete,head,option.....
# return redirect('/index/') # def detail(request,nid):
# nid=request.GET.get('nid')
# detail_info=USER_DICT[nid]
# return render(request,'detail.html',{'detail_info':detail_info})
def detail(request,nid):
#return HttpResponse(nid)
detail_info=USER_DICT[nid]
return render(request,'detail.html',{'detail_info':detail_info}) from django.views import View
class Home(View):
def dispatch(self,request,*args,**kwargs):
#调用父类中的dispatch
print('before')
result=super(Home,self).dispatch(request,*args,**kwargs)
print('after')
return result def get(self,request):
print(request.method)
return render(request,'home.html')
def post(self,request):
print(request.method)
return render(request,'home.html') """def login(request):
if request.method=='GET':
return render(request,'login.html')
elif request.method=='POST':
u = request.POST.get('user')
p = request.POST.get('pwd')
if u=='root' and p=='123':
return redirect('/index/')
else:
return render(request,'login.html')
else:
# put,delete,head,option.....
return redirect('/index/')
""" from app01 import models
def orm(request):
#增,创建方法1
#models.UserInfo.objects.create(username='root',password='123')
# 增,创建方法2
#dic={'username':'eric','password':'666'}
#models.UserInfo.objects.create(**dic)
# 增,创建方法3
#obj=models.UserInfo(username='alex',password='123')
#obj.save()
#查
#result1=models.UserInfo.objects.all()
#result2 = models.UserInfo.objects.filter(username='root')
#all表示把这个表中的所有数据都拿到。
# 返回的result是QuerySet类型的,这个类型是Django提供的。可以把QuerySet理解成是个列表[]。
#[obj(id,username,password),obj(id,username,password),obj(id,username,password)] #删除-所有数据
#models.UserInfo.objects.all().delete()
#删除-某些数据
#models.UserInfo.objects.filter(id=4).delete() #更新
models.UserInfo.objects.all().update(password=6669)
for row in result1:
print(row.id,row.username,row.password)
print(result1)
return HttpResponse('orm')
DjangoORM基本增删改查的更多相关文章
- 11)django-ORM(操作增删改查)
ORM从增删改查等方面说明 一:创建数据 #创建数据两种方式1,推荐方式1 UserInfo.objects.create(username=") #方式1变种 user_dict={&qu ...
- django-orm框架表单的增删改查
08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...
- Django-ORM增删改查
ORM对单表进行增删改查 一,增加记录 #第一种方式 b=Book(name="Linux",price=66,author="kelvin",pub_date ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- ASP.NET从零开始学习EF的增删改查
ASP.NET从零开始学习EF的增删改查 最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查
系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...
- 通过Java代码实现对数据库的数据进行操作:增删改查
在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao xingming xue ...
- Hibernate全套增删改查+分页
1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...
- 使用 Json.Net 对Json文本进行 增删改查
JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...
随机推荐
- 【LG3233】[HNOI2014]世界树
题面 洛谷 题解 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include < ...
- OpenStack入门篇(七)之认证服务Keystone
一.Keystone的概述 Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等. ...
- 【xshell属性设置】如何修改xshell字体大小
1.周末在家,想搞一下学习,于是远程公司的电脑(我的移动硬盘在公司,里面有虚拟机及测试环境) 发现xshell界面字体太小,不方便看,于是研究了一下如何来设置xshell 的字体大小 2.点击左上角的 ...
- Maven学习(十八)-----Maven依赖管理
其中一个Maven的核心特征是依赖管理.管理依赖关系变得困难的任务一旦我们处理多模块项目(包含数百个模块/子项目). Maven提供了一个高程度的控制来管理这样的场景. 传递依赖发现 这是很通常情况下 ...
- python-面向对象-内置方法补充
__del__item系列 __getitem__ __setitem__ __delitem____hash____eq__ 构造方法 申请一个空间析构方法 释放一个空间之前执行某对象借用了操作系统 ...
- 在eclipse中通过git添加Maven 多重项目时会遇到的问题
最近,项目换到了使用git作版本控制.于是就开始了,拉代码,测试的时候了. 再过程中遇到两个问题: 1.下载下来的不是项目,只是文档,转换为Maven项目之后 pom.xml报错(org.codeha ...
- CTF--zip伪加密
刷题 一.BUGKU WEB 1. 变量1 知识点php两个$$是 可变变量,就是一个变量的变量名可以动态的设置和使用 $GLOBALS一个包含了全部变量的全局组合数组.变量的名字就是数组的键 < ...
- Longge's problem(欧拉函数应用)
Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...
- Divide by three, multiply by two(DFS+思维)
Polycarp likes to play with numbers. He takes some integer number x, writes it down on the board, an ...
- MUI设置卡头卡位的形式进行切换
这是mui的官方帮助文档,一切问题都能在这里找到http://dev.dcloud.net.cn/mui/ui/解决方案. 下面是MUI官方对卡头卡尾的一些描述: 在mobile app开发过程中,经 ...
