zoukankan      html  css  js  c++  java
  • Django学习路11_向数据库中添加 和 获取指定条件数据

    在 views.py 中添加函数 向数据库中添加数据
    
    def add_persons(request):
    
        for i in range(15):
            person = Person()
            flag = random.randrange(100)
            person.p_name = "Hany_ %d"%(i)
            person.p_age = flag
            person.p_sex = flag%2
            person.save()
        return HttpResponse("批量添加成功")
    
    注: 
    使用随机数,进行添加数据(目前还是静态数据)
    添加表中的元素属性值
    save 进行保存
    在使用 random 之前先进性导入
    http://127.0.0.1:8000/app4/addpersons

    添加一条数据
    
    def add_person(request):
        person = Person.objects.create(p_name='Yizhan')
        # 使用 objects.create 进行创建一条数据
        person.save()
        return HttpResponse("%s 创建成功"%(person.p_name))
    
    注:
    使用 create 方法进行创建

     

     


    获取数据
    
    def get_persons(request):
        # persons = Person.objects.filter(p_age__gt=30)
        '''age 大于 30 的 '''
        # persons = Person.objects.filter(p_age__gt=30).filter(p_age__lt=80)
        '''.filter .filter 表示且'''
        persons = Person.objects.exclude(p_age__lt=30).exclude(p_age__gt=80)
        '''age 大于 30 的 , 小于 80 的,exclude 除了,不包含的意思 '''
        print(type(persons))
        '''<class 'django.db.models.query.QuerySet'> 结果集类型'''
        context = {
            'persons':persons
        #     传递到前端代码中
        }
        return render(request,'person_list.html',context = context)
    
    注: 
    .filter(表示包含的条件)
    .filter(表示包含的条件).filter(表示包含的条件)  表示两个条件都需要满足,且
    
    获取到的数据都是 QuerySet 类型,放入到值中,使用网页进行遍历
    这里使用的是 render ,不是 HttpResponse
    
    p_age__gt 表示大于
    p_age__lt 表示小于

    获取一条数据
    objects.get(条件)
    
    first() 返回查询集中的第一个对象
    
    last() 返回查询集中的最后一个对象
    
    count() 返回当前查询集中的对象个数
    
    exists() 判断查询集中是否有数据,返回 True 和 False
    True 表示有数据
    
    def get_person(request):
        person = Person.objects.get(p_age = 48)
        context = {
            'person':person
        }
        return render(request,'person_one.html',context = context)
    
    注: 
    如果没有查询到数据,则会报 500 服务器异常
    DoesNotExist 异常
    
    如果查询到的对象多于一个,返回两个对象也会报错
    MultiObjectsReturned 异常


    templates 中person_list.html 内容
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h2>Person 大于 30 的 , 小于 80 的 :</h2>
    <h4>
        {% for person in persons %}
        <li>
            姓名:{{ person.p_name }} 年龄{{ person.p_age }}
        </li>
        {% endfor %}
    </h4>
    </body>
    </html>
    
    注:
    在 for 循环的时候两边有 {%    %}
    正常单个语句时,使用的是 {{ 属性}}
    最后要加上 {% endfor %}
    
    此处的 属性为数据库表中的元素

    不要忘了的点:
    
    urlpatterns = [
        url(r'addpersons',views.add_persons),
        url(r'getpersons',views.get_persons),
        url(r'addperson',views.add_person)
    ]
    
    在 urls.py 中 ,进行注册

    启动命令
    
    python manage.py runserver

    使用类方法创建单个对象示例:
    
    在 models.py 中自定义类方法 create 进行创建
    
        @classmethod
        def create(cls,p_name,p_age = 100,p_sex = True):
            # 自定义方法进行创建对象,可以包含表达式
            return cls(p_name = p_name,p_age = p_age,p_sex = p_sex)
    
    views.py 中 add_person 函数
    
    def add_person(request):
        person = Person.create('Lao')
        person.save()
        return HttpResponse("创建成功")

     


    2020-05-09

     

     

     

    如果觉得文章不错,可以分享给其他人哟~
  • 相关阅读:
    maven安装
    VMware workstation安装报Microsoft Runtime DLL和Intel VT-x错误
    jQuery的拾色器
    Distributed Representations of Words and Phrases and their Compositionality
    Deep Learning for Natural Language Processeing:vector space models
    Deep Learning for Natural Language Processeing : Convex Optimization
    Java Web的一些基础知识
    Java Web1: 邮件发送系统(JSP+Servlet+JavaBean)
    学习效率与方法
    Deep Learning6: Convolution and pooling
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12859172.html
Copyright © 2011-2022 走看看