django-单表查询和商品详情案例

一. 查询单个对象

1. 查询一个

Movie.objects.get(id="2") # 有且仅有一个结果,不然会报错,推荐下一个

Movie.objects.filter(id="2") # 查询不到返回空列表,不会报错。

2. 获取第一个

Movie.objects.first()

3. 获取最后一个

MOvie.objects.last()

4. 获取总记录数:

Movie.objects.count()

二. 查询多个对象

 1. 获取所有记录

Movie.objects.all()

2. 切片(不支持负索引)

Movie.objects.all()[5:10]

3. 过滤

Movie.objects.filter(name="肖生克的救赎”)

4. 模糊查询

4.1 以爱开头的电影名

Movie.objects.filter(name_startswith="爱”)

4.2 以爱结尾的电影名

Movie.objects.filter(name_endswith="爱”)

4.3 包含爱的电影名

Movie.objects.filter(name_contains="爱”)

4.4 查询默认是区分大小写,如果要忽略大小写查询,则

如查询 i或I 开头的电影名

Movie.objects.filter(name_istartswith="i”)

其他一样,iendswith,icontains。

其他

1,查询某字段是否为空

Movie.objects.filter(name_isnull=True)

2. 多条件查询

Movie.objects.filter(name_startswith="爱”,id="")

3. 部分查询

Movie.objects.values("id","name").filter(name_contains="爱“)

4. 排查查询

Movie.objects.filter(name_startswith="爱”).exclude(name_endswith="爱")

5. 排序

Movie.objects.order_by("id") # 升序

Movie.objects.order_by("-id") # 降序

6. 大于表示

Movie.objects.fliter(id__gt="100") # 大于100的

Movie.objects.fliter(id__lt="100") # 小于100的

Movie.objects.fliter(id__lte="100") # 小于等于100的

Movie.objects.fliter(id__range=("100","120") # 大于100小于120的

Movie.objects.fliter(id__in=("100","120") #id=100和id=120的

编写显示底层的sql语句方法:

def show_sql:

        from django.db import connection

        print connection.queries[-1]['sql']


 三. 单表的增删改

1. 增加数据

方法一:

通过调用模型类对象的save()方法

from movie.models import *
t = Movies(name="",intro="",img_url="")
t.save()
方法二:

通过object管理器的create方法,底层也是调用了save方法的

Movies.objects.create(name="",intro="",img_url="")

2. 删除数据

方法一:

实例化要删除的对象使用delete()删除

Movies.objects.get(id="1").delete()

方法二:

删除多个包含*的字段

 Movies.objects.filter(name_contains="*").delete()

3. 修改数据

方法一:

实例化要修改的对象然后对其属性赋值最后保存

last_data = Movies.objects.last()

last_data.name = “最后的电影名”

last_data.save()

 方法二:

用object管理器的filter方法

Movies.objects.filter(name="修改前").update(name="修改后")

四. 商品详情案例

常用字段和属性

常用字段类型
  •  django所有的数据模型都继承自models.Model
  • Charfield max_length(输入框)
  • TextField 没有长度限制的字符串(文本域)
  • DateTimeField 日期+时间。
  • BooleanField 真假。
  • NullBooleanField Null,真假,。
  • Integer 整数。
  • PositivelntegerField 正整教。
  • DecimalField max digits(几位数)
  • decimal places(小数点后保留几位)。
  • lmageField 图片 依赖于 Pillow(处理图片)
  • upload to='upload' 指定文件上传到目录。
  • FileField(lmageField继承FileField)。
  • AutoField.ForeignKey 1:n.ManyToManyField n:n。
  • EmailField 邮箱。
  • UUIDField 重复的概率非常低基本可以忽路,全世界都不一样的标示,uuid的产生和服务器的环境有关(CPU,网关,)唯一性的标示,用户模块,订单号。
  • 不同的字段在后台对应不同的htmI89组件
  • ImageField 依赖于Pilow组件(python库)
常用属性
  • unique 标示这个字段唯一
  • default 默认的意思,(如果不写的话就使用默认的值)
  • null=True 允许字段为nul,(允许数据库为null)数据库层面的
  • blank=True表单阶段的,admin后台的
  • auto_now 针对时间的,自动调整当前,(当修改条目的时候,这个时间会自动更新),每次修改都会更新(修改,保存的时
  • 候才会生效,)
  • auto_now_add 针对时间的,只添加一次,(创建的时间) 

编写模型,并映射到数据库后通过后台管理插入一条数据。

以这张为例子:

 1. 创建子应用

python manage.py startapp goods_app

setting.py添加app和链接数据库

 

 

 2. 编写模型models.py

from django.db import models

# Create your models here.
class Goods(models.Model):
    gid = models.AutoField(primary_key=True)
    gname = models.CharField(max_length=50)
    gdesc = models.TextField()
    gprice = models.DecimalField(max_digits=10, decimal_places=2)
    count = models.PositiveBigIntegerField()
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    gimg = models.ImageField(upload_to='goods_imgs/')

然后终端运行命令生成迁移文件和同步数据库:

python manage.py makemigrations

python manage.py migrate 

# 如果提示安装pillow则

pip install pillow 

 因为ImageFiled属性需要安装python库,上文常用属性写到过。

成功后数据库如下:

 3. 创建管理员

我们不用上文的增删改,用后台系统进行:

admin.py注册后台管理的模型:

from django.contrib import admin

from goods_app.models import Goods

# Register your models here.
admin.site.register(Goods) 

 然后终端输入命令添加超级管理员:

python manage.py createsuperuser

 然后输入自己创建的账号密码,如:

 数据库就能找到你的数据了:

 4. 后台插入数据

运行项目浏览器访问http://127.0.0.1:8000/admin/,输入账号密码进入后台系统。

 将商品信息添加进去,如:

然后数据库可查看到数据:

 图片则是在根目录新建的文件夹中,创建模型的那个路劲中:

 至此,学会了如何单表查询,增删改和创建商品详情案例学会后台管理增加记录信息。

1. Blog 一个基于 Django 的博客系统,使用 Django 内置的用户认证系统,提供了博客文章的创建、更新、删除、评论等功能,同时支持 markdown 格式的文章写作。 2. Online Shop 一个基于 Django 的在线商店系统,实现了商品分类、商品展示、购物车、订单管理等功能,使用 Django 集成的支付宝 SDK 实现了在线支付。 3. Social Network 一个基于 Django 的社交网络系统,用户可以注册、登录、创建个人资料、添加好友、发布动态、评论等,使用 Django 内置的消息系统实现私信功能。 4. Todo List 一个基于 Django 的任务清单应用,用户可以创建、查看、修改、删除任务,使用 Django 内置的时间日期模块和 Bootstrap 实现了任务的时间戳和样式美化。 5. Online Course 一个基于 Django 的在线课程平台,提供了课程分类、课程展示、购买课程、学习进度等功能,使用 Django 集成的视频播放器实现了在线学习。 6. Weather App 一个基于 Django 的天气预报应用,使用第三方 API 获取天气数据,用户可以通过输入城市名称获取当地天气情况,使用 Django 内置的缓存系统缓存天气数据,节省了 API 请求次数。 7. Recipe Book 一个基于 Django 的食谱分享应用,用户可以创建、查看、修改、删除食谱,使用 Django 内置的搜索模块实现了关键词搜索功能。 8. Music Player 一个基于 Django 的音乐播放器应用,用户可以上传音乐文件,创建歌单,播放歌曲,使用 Django 集成的音频播放器实现了在线播放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值