Python全栈 Web(Django框架、模型中的CRUD)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发、项目、flask项目、项目实战、django框架、Python项目、Python的Flask框架、Pytho...
模型中的CRUD
    增加数据:
        1.Entry.objects.create(属性1=值, 属性2=值,...)
          返回值:
            创建好的模型对象

def add_views(request):
    # 三种增加方式
    # 1.Entry.objects.create()
    obj = Author.objects.create(name="Paris", age=18, email="wei8023@gmail.com")
    print(obj.id, obj.name, obj.age, obj.email)

        2.创建一个Entry对象 并通过save() 进行保存
          obj = Entry(属性1=值1, ..)
          obj.属性 = 值
          obj.save()
          没有返回值  保存成功后obj会被重新赋值

    # 2.obj.save()
    obj = Author(name="王大锤", age=32, email="laowang@email.com")
    obj.save()
    print(obj.id, obj.name, obj.age, obj.email)

        3.使用字典构建成对象 并通过save()保存
          dic = {
            "属性1": "值1"
            ...
          }
          obj = Entry(**dic)
          obj.save()

    # 3. obj.save()
    dic = {
        "name": "wangdacui",
        "age": 33,
        "email": "wang@qq.com",
    }
    obj = Author(**dic)
    obj.save()
    print(obj.id, obj.name, obj.age, obj.email)
    return HttpResponse("OK")

    查询数据:
        所有的查询 通过Entry.objects 调用查询接口函数
        Entry.objects.filter()
        所有的查询接口 都可以通过一个query属性来得到对应的sql语句
        Entry.objects.filter().query

        基本查询操作:
            all()
                Entry.objects.all()
                返回queryset(查询结果集,是一个封装了若干个对象的列表)


def query_views(request):
    # all()  查询所有Author实体中所用的数据
    authors = Author.objects.all()
    print(authors.query)
    print(authors)

    # 循环遍历authors得到每一个数据
    for author in authors:
        print(author.id, author.name, author.email)

        查询返回指定列:
            values()|values("字段1", "字段2"...)
                Entry.objects.values()
                Entry.objects.values("name", "age")
                查询一个queryset中的部分列  并风封装成字典 再放到列表中
                也允许将values放在其返回查询结果集的后面

    # 查询部分列
    names = Author.objects.values("name")
    for name in names:
        print(name["name"])
    print(names)

    # 在查询所有结果的基础上进行筛选
    names = Author.objects.all().values("name")
    for name in names:
        print(name["name"])

        查询返回指定列:
            values_list()
                将结果封装到元祖中在封装到列表中返回
                用法同values


    # 将查询结果封装到元组再封装到列表中
    authors = Author.objects.values_list()
    for author in authors:
        print(author[0], author[2])

        只查询一条数据:
            get(条件)
                查询只返回一条数据
                Entry.objects.get(条件)
                如果查询结果为空或者查询结果不是一条记录都会抛异常

    # 只查询一条数据
    author = Author.objects.get(id=1)
    print(author)

        查询部分行数据:
            filter(条件1, 条件2,...)
                Entry.objects.filter(条件)
                使用逗号隔开表示使用and链接方式查询
                Author.objects.filter(id=1, name="Paris")

# filter根据条件筛选 authors = Author.objects.filter(id=1) print(authors.query) print(authors) # and方式查询 author = Author.objects.filter(id=2, name="Paris").values() print(author)

                在条件查询中 Django提供了若干个查询谓词(Field Looups)
                可以完成非等值条件的查询
                Entry.objects.filter(属性__查询谓词=值)
                所有支持条件查询的地方都可以写谓词
                filter(),get(),exclude()

    # 查询所有age大于30的author信息
    authors = Author.objects.filter(age__gt=30).values()
    print(authors)
    # 查询所有姓王的author信息
    authors = Author.objects.filter(name__startswith="王").values()
    print(authors)
    # 查询所有email中包含wang的author信息
    authors = Author.objects.filter(email__contains="wang")
    print(authors)

    对条件去反:
            exclude(条件)
            对现有条件进行取反操作查询
            Entry.objects.exclude(条件)

    # 对条件取反操作  查询年龄小于30的
    author = Author.objects.exclude(age__gt=30).valuea()
    

        聚合查询(无分组):
            aggregate()
            Entry.objects.all().aggregate(名=聚合函数("字段")
            集合函数:
                Avg()    平均值
                Count()  数量
                Sum()    求和
                Min()    求最小
                Max()    求最大

    # 聚合函数
    result = Author.objects.all().aggregate(avg=Avg("age"))
    print(result)

        聚合查询(有分组)
            annotate()
            Entry.objects.all().values("字段1", ...).annotate(字段=聚合函数()).values('字段1'...)
            第一个values是用于做聚合分组 第二个是具体筛选的值

    # 分组聚合
    result = Author.objects.values("isActive").annotate(sum=Sum("age")).filter(isActive=True).all()
    print(result)

        排序查询:
            order_by()
            Entry.objects.order_by("字段1", "字段2")
            默认升序  以列1进行排序 如果列1出现重复以列2进行排序
            降序排序在列明前加"-"号

    # 排序查询
    result = Author.objects.order_by("-id")
    for re in result:
        print(re)

    修改单个实体:
        1.查
          通过get()得到要修改的实体对象
        2.改
          通过对象的属性来修改对象的值
        3.保存
          通过对象的save()保存会数据库

def update1_views(request):
    # # 修改ID为2 的author信息
    au = Author.objects.get(id=2)
    au.age = 33
    au.email = "baidu@163.com"
    au.isActive = False
    au.save()

    批量修改:
        调用 QuerySet的update(属性=值, 属性=值) 实现批量修改

    # 将isActive为False的数据  全部改为True
    Author.objects.filter(isActive=False).update(isActive=True)

    删除:
        调用实体对象或查询结果集的delete()就可以删除

    # 删除
    author = Author.objects.get(id=1)
    author.delete()

    author = Author.objects.filter(name="Paris")
    author.delete()

        一般情况下很少有删除都是利用改变某个字段的状态来达到删除的效果

    author = Author.objects.get(id=id)
    # 通过修改状态模拟删除
    author.isActive = False
    author.save()

       django转发与重定向的区别  转发:相当只有一个路由最终的结果是由一个视图函数处理
           另一个视图只是做了一个调用另个函数的作用   
           重定向是访问 两个路由  分别由两个视图进行处理 
           转发不会改变url 只有一个请求  重定向会改变url  有两次请求

    # 转发
    # return query_all_views(request)

    # 重定向
    # return HttpResponseRedirect("/query_all")
    return redirect("/query_all")




相关文章
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
|
2月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
257 2
|
2月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
162 0
|
5月前
|
存储 机器学习/深度学习 人工智能
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
215 58
|
3月前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
109 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
255 11
200行python代码实现从Bigram模型到LLM
|
5月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
161 1
|
6月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
4770 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
7月前
|
数据采集 人工智能 测试技术
Python有哪些好用且实用的Web框架?
Python 是一门功能强大的编程语言,在多个领域中得到广泛应用,包括爬虫、人工智能、游戏开发、自动化测试和 Web 开发。在 Web 开发中,Python 提供了多种框架以提高效率。以下是几个常用的 Python Web 框架:1) Django:开源框架,支持多种数据库引擎,适合新手;2) Flask:轻量级框架,基于简单核心并通过扩展增加功能;3) Web2py:免费开源框架,支持快速开发;4) Tornado:同时作为 Web 服务器和框架,适合高并发场景;5) CherryPy:简单易用的框架,连接 Web 服务器与 Python 代码。这些框架各有特色,可根据需求选择合适的工具。
338 14
|
29天前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
145 4

推荐镜像

更多