steam网站代做google下载官方版
django学习笔记
http://djangobook.py3k.cn/2.0/chapter05/
文章目录
- django学习笔记
- 模型 models.py
- 1、定义数据模型
- 2、模型安装
- 3、创建数据表
- 4、数据表的增删改查
- 4.1 增加
- 4.2 删除
- 4.3 修改
- 4.4 查询
- 4.5 模糊查询
- 4.6 排序&连锁查询
- 4.7 限制返回数据
- 5、模型使用实战
模型 models.py
1、定义数据模型
from django.db import models
class Publisher(models.Model):name = models.CharField(max_length=128) # 出版社名称
2、模型安装
INSTALLED_APPS = ('mysite.books', // books这里是你app名字
)
3、创建数据表
python manage.py validate -检查模型的有效性
python manage.py sqlall books --生成shell语句
python manage.py syncdb --执行shell语句
4、数据表的增删改查
https://cloud.tencent.com/developer/article/1774570 —这篇文章更容易懂
4.1 增加
这里其实有两步:1、创建一个对象 2、调用save
models.Publisher.objects.create(name="新华出版社")
4.2 删除
models.Publisher.objects.filter(name="清华大学出版社").delete()
Publisher.objects.all().delete() # 删除全部
4.3 修改
使用sava方法去修改,会修改所有列
obj = models.Publisher.objects.get(id=id) #先查询
obj.name = name # 在内存中修改
obj.save() # 将修改保存到数据库使用updata去修改,下面这种方法只会修改1列
>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
4.4 查询
obj1 = models.Publisher.objects.get(name="新华出版社") #返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
obj2 = models.Publisher.objects.filter(name="新华出版社") #它包含了与所给筛选条件相匹配的对象,返回的是一个对象,如果查询不到,那么返回的是空列表,不报错。
obj3 = models.Publisher.objects.filter(name="新华出版社").first() #返回与之匹配的第一个对象,如果没有,则返回空。
obj4 = models.Publisher.objects.all() #获取表中所有数据
4.5 模糊查询
4.6 排序&连锁查询
>>> Publisher.objects.order_by("name")
>>> Publisher.objects.order_by("address")此外,Django让你可以指定模型的缺省排序方式:
class Publisher(models.Model):name = models.CharField(max_length=30)address = models.CharField(max_length=50)city = models.CharField(max_length=60)state_province = models.CharField(max_length=30)country = models.CharField(max_length=50)website = models.URLField()def __unicode__(self):return self.name**class Meta:****ordering = ['name']**连锁查询
>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
4.7 限制返回数据
Publisher.objects.order_by('name')[0] --相当于limit1
5、模型使用实战
from django.shortcuts import render, redirect
from app01 import models# Create your views here.def publisher_list(request):obj = models.Publisher.objects.all() # 查数据return render(request, 'publisher_list.html', {'publisher_list': obj}) # {'publisher_list': obj}是模板,可以传递给前端页面。def publisher_add(request):if request.method == "POST": pub_name = request.POST.get('pub_name') if not pub_name:return render(request, 'publisher_add.html', {'error': "出版社名字不能为空"})if models.Publisher.objects.filter(name=pub_name):return render(request, 'publisher_add.html', {'error': "出版社已经存在"})models.Publisher.objects.create(name=pub_name) # 增加出版社,使用create方法return redirect('/publisher_list/') return render(request, 'publisher_add.html')。def publisher_del(request):pk = request.GET.get('id') models.Publisher.objects.filter(id=pk).delete() # 删除数据库中的数据return redirect('/publisher_list/') def publisher_edit(request):id = request.GET.get('id')obj1 = models.Publisher.objects.get(id=id)if request.method == "GET":return render(request, 'publisher_edit.html', {'pub_obj': obj1})else:name = request.POST.get('pub_name')obj2 = models.Publisher.objects.filter(name=name)if obj2:return render(request, 'publisher_edit.html', {'msg': "该出版社已存在"})else:obj1.name = name # 在内存中修改obj1.save() # 将修改保存到数据库return redirect('/publisher_list')