当前位置: 首页 > news >正文

django学习笔记

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') 
http://www.lryc.cn/news/318932.html

相关文章:

  • Python环境安装及Selenium引入
  • 【gpt实践】实用咒语分享
  • Linux用户和权限
  • git svn混用
  • FPGA静态时序分析与约束(三)、读懂vivado时序报告
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Badge)
  • Python程序设计基础——代码习题
  • 代码随想录 贪心算法-中等题目-序列问题
  • pytest生成allure的报告
  • Python控制摄像头并获取数据文件
  • 免费分享一套SpringBoot+Vue自习室(预约)管理系统,帅呆了~~
  • mac删除带锁标识的app
  • PHP异世界云商系统开源源码
  • Vue生成Canvas二维码
  • JAVA基础—JVM内存结构基础需知
  • 【滤波专题-第8篇】ICA降噪方法——类EMD联合ICA降噪及MATLAB代码实现(以VMD-ICA为例)
  • jeecg 启动 微服务 更改配置本地host地址
  • 微服务day01 -- SpringCloud01 -- (Eureka , Ribbon , Nacos)
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.10-2024.03.15
  • ThingsBoard Edge 安装部署
  • CSS进阶空间转换和 less
  • C/C++ 知识点:| 与 || 的区别
  • CSS中如何设置单行或多行内容超出后,显示省略号
  • PFA烧杯透明聚四氟乙烯刻度量杯
  • Redis底层数据结构之String
  • 【Maven学习笔记】Maven入门教程(适合新手反复观看学习)
  • idea Springboot 在线考试管理系统开发mysql数据库web结构java编程计算机网页
  • Spring Cloud Alibab 入门搭建,包含Nacos中心,注册服务发现服务,Feign请求,GateWay网关,sentinel限流
  • ShardingSphere-SQL 解析 Issue 处理流程
  • 【矩阵】48. 旋转图像【中等】