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')