• Python学习第三十一课——ORM单表增删改查


    Urls.py

    from django.conf.urls import url
    from django.contrib import admin
    from django.urls import path
    from app02 import views
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'index/',views.index),
        url(r'addBook/',views.addbook),
        url(r'update/',views.update),
        url(r'delete/',views.delete),
        url(r'select/',views.select),
    
    ]

    views.py 

    from django.shortcuts import render, HttpResponse
    
    # Create your views here.
    from app02.models import *
    
    
    def index(request):
        return render(request, "index.html")
    
    
    # 添加数据方法一:通过实例对象添加
    # def addbook(request):
    #
    #     b=Book(name="python基础",price=99,author="han",pub_date="2017-12-12")
    #     b.save()
    #
    #     return HttpResponse("添加成功")
    
    
    # 添加数据方法二:
    def addbook(request):
        Book.objects.create(name="JAVA基础", price=50, author="han", pub_date="2017-12-12")
        # Book.objects.create(**dic)
        return HttpResponse("添加成功")
    
    
    # 表记录修改方法一:filter update
    # def update(request):
    #     # 先查 后改
    #     Book.objects.filter(id="1").update(price=999)
    #
    #     return HttpResponse("修改成功!")
    
    # 表记录修改方法二:get
    def update(request):
        # get方法
        b = Book.objects.get(id="2")
        b.price = 200
        b.save()
    
        return HttpResponse("修改成功!")
    
    
    def delete(request):
        Book.objects.filter(id="1").delete()
        return HttpResponse("删除成功!")
    
    # 查询方法一:
    
    def select(req):
        # book_list = Book.objects.all()
        # print(book_list)
        # print(book_list[0])  # PHP
    
        # 也可以进行切片
        # book_list = Book.objects.all()[:2]  # 切片 查两条出来
    
        # book_list = Book.objects.filter(author='han') # filter 可以取出多条结果 如果按照作者来取,作者有两个就可以用filter
        # book_list = Book.objects.get(id=2)  # get 只能取出来一条
    
        book_list = Book.objects.filter(id=2).values("name","price") #values 通过查到ID=2的一条记录  然后取出name字段的值
    
        return render(req, "index.html", {"book_list":book_list})
    
    
    # def select(req):
    #     book_list = Book.objects.all()
    #     # print(book_list)
    #     # print(book_list[0])  # PHP
    #     return render(req, "index.html", {"book_list":book_list})

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .head{
                line-height: 40px;
                background-color: green;
                color: white;
                text-align: center;
            }
    
        </style>
    
    
    </head>
    <body>
    <div class="outer">
        <div class="head">标题</div>
        <div class="contend">
            <a href="/addBook/">添加书籍</a>
            <a href="/update">修改书籍</a>
            <a href="/delete">删除书籍</a>
            <a href="/select/">查询书籍</a>
            <hr>
            <div class="queryResult" >
                {% for book in book_list %}
                    <div>
                        <p>{{ book.name }} {{ book.author }} {{ book.price }}</p>
                    </div>
    
    
                {% endfor %}
    
            </div>
    
    
    
        </div>
    
    
    </div>
    
    
    </body>
    </html>

    settings.py

    # settings.py中最后面加上这个 当你执行修改的时候可以看到语句
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    }

    # 查询相关API:

    # 查询相关API:
    
    #  <1>filter(**kwargs):      它包含了与所给筛选条件相匹配的对象
    
    #  <2>all():                 查询所有结果
    
    #  <3>get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
    
    # -----------下面的方法都是对查询的结果再进行处理:比如 objects.filter.values()--------
    
    #  <4>values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列
    
    #  <5>exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象
    
    #  <6>order_by(*field):      对查询结果排序
    
    #  <7>reverse():             对查询结果反向排序
    
    #  <8>distinct():            从返回结果中剔除重复纪录
    
    #  <9>values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
    
    #  <10>count():              返回数据库中匹配查询(QuerySet)的对象数量。
    
    # <11>first():               返回第一条记录
    
    # <12>last():                返回最后一条记录
    
    #  <13>exists():             如果QuerySet包含数据,就返回True,否则返回False。
  • 相关阅读:
    c++中static的使用
    sublime3 ctl+b无效
    Maximum Subarray
    Find the Duplicate Number
    Reverse Linked List
    c++ primer 2 变量和基本类型
    Single Number II
    Roman to Integer & Integer to Roman
    Search Insert Position
    Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/pyhan/p/12400899.html
Copyright © 2020-2023  润新知