• 模板和单表操作


    1、模板导入--->写了一个好看的组件,可以复用

      1、写一个模板

      2、在模板中:{% include '模板的名字'%}

    2、模板的继承

      1、写一个母版,留一个可扩展的区域(盒子),可以留多个盒子(留的越多,可扩展性越高)

        {%block 名字%}

          可以写内容

        {%endblock%}

      2 在子模板中使用:

         {%block 名字%}

               子模板的内容

         {%endblock 名字%}

    3 静态文件相关

       1 写死静态文件:<link rel="stylesheet" href="/static/css/mycss.css"> 、

       2 使用 static标签函数:

             -{%load static%}

         static返回值,会拼上传参的路径  

             -{% static "传参"%}

       3 使用get_static_prefix 标签

         -{%load static%}

              get_static_prefix返回值是:静态文件的地址,相当于/static/

        --{% get_static_prefix %}css/mycss.css

    4 单表操作;

       -数据迁移命令:

         -python3 manage.py makemigrations --->只是对变化做一个记录,记录文件在app的migrations

         -python3 manage.py migrate ---->把更改提交到数据库

         -python3 manage.py showmigrations ---->查看那个没有提交到数据库

      -查询api

       <1> all():           查询所有结果

       <2> filter(**kwargs):      它包含了与所给筛选条件相匹配的对象

       <3> get(**kwargs):        返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。

       <4> exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象

       <5> order_by(*field):   对查询结果排序('-id')

       <6> reverse():       对查询结果反向排序

       <8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。

       <9> first(): 返回第一条记录

       <10> last(): 返回最后一条记录

       <11> exists(): 如果QuerySet包含数据,就返回True,否则返回False

       <12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列

         <13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

       <14> distinct(): 从返回结果中剔除重复纪录

      -基于双下划线的模糊查询    
        Book.objects.filter(price__in=[100,200,300])
        Book.objects.filter(price__gt=100)
        Book.objects.filter(price__lt=100)
        Book.objects.filter(price__gte=100)
        Book.objects.filter(price__lte=100)
        Book.objects.filter(price__range=[100,200])
        Book.objects.filter(title__contains="python")
        Book.objects.filter(title__icontains="python")
        Book.objects.filter(title__startswith="py")
        Book.objects.filter(pub_date__year=2012)
    import os
    
    if __name__ == '__main__':
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day76orm.settings") 默认的setting是谁就传哪个
        import django
    
        django.setup() 起动Django
    
        from app01 import models
         ****************新增*********插入数据的两种方式
         方式一 :返回结果是一个对象
         book=models.Book.objects.create(name='红楼梦',price=23.8,publish='人民出版社',author='曹雪芹',create_data='2018-09-17')
         print(book.name)
         方式二:先实例化产生对象,然后调用save方法,保存
         book=models.Book(name='水浒传',price=99.8,publish='老男孩出版社',author='施耐庵',create_data='2018-08-08')
         book.save()
         print(book.name)
         时间格式,可以传字符串,可以传日期格式
         import datetime
             ctime = datetime.datetime.now()
         book = models.Book.objects.create(name='西游记', price=73.8, publish='北京出版社', author='吴承恩', create_data=ctime)
         print(book.name)
         删除******************
         删除名字叫西游记的这本书
         ret=models.Book.objects.filter(name='西游记').delete()
         print(ret)
         删除的第二种方式:
         ret = models.Book.objects.filter(name='西游记').first()
         ret.delete()
         **************修改
         ret=models.Book.objects.filter(name='西游记').update(price=20.9)
         对象修改(没有update方法,但是可以用save来修改)
         book = models.Book.objects.filter(name='西游记').first()
         book.price=89
         book.save()
         查询************************重点************************
         (1)all()
         ret=models.Book.objects.all()
         print(ret)
         filter()
         查询名字叫西游记的这本书
         ret=models.Book.objects.filter(name='西游记').first()
         不支持负数,只支持正数
         ret=models.Book.objects.filter(name='西游记')[-1]
         print(ret)
         filter内可以传多个参数,用逗号分隔,他们之间是and的关系
         ret=models.Book.objects.filter(name='西游记',price='73.8')
          ret.query -->queryset对象打印sql
         print(ret.query)
        get() 有且只有一个结果,才能用,如果有一个,返回的是对象,不是queryset对象,通常用在,用id查询的情况
         ret=models.Book.objects.get(name='红楼梦')
         ret=models.Book.objects.get(id=1)
         print(type(ret))
             exclude()查询名字不叫西游记的书,结果也是queryset对象
        '''
            SELECT
            `app01_book`.`id`,
            `app01_book`.`name`,
            `app01_book`.`price`,
            `app01_book`.`publish`,
            `app01_book`.`author`,
            `app01_book`.`create_data`
        FROM
            `app01_book`
        WHERE
            NOT (
                `app01_book`.`name` = 西游记
                AND `app01_book`.`price` = 23.8
            )
        '''
         ret=models.Book.objects.exclude(name='西游记',price='23.8')
         print(ret)
         print(ret.query)
         order_by 按价格升序排
         ret=models.Book.objects.all().order_by('price')
         print(ret)
         queryset对象可以继续 点 方法
         ret=models.Book.objects.all().order_by('price').filter(name='西游记')
         print(ret)
         按价格倒序排
         ret=models.Book.objects.all().order_by('-price')
         print(ret)
         可以传多个
         ret=models.Book.objects.all().order_by('-price','create_data')
         print(ret)
         print(ret.query)
         reverse 对结果进行反向排序
         ret=models.Book.objects.all().order_by('-price').reverse()
         print(ret)
         print(ret.query)
         count  查询结果个数
         ret=models.Book.objects.all().count()
         ret=models.Book.objects.all().filter(name='西游记').count()
         print(ret)
         last 返回book对象
         ret=models.Book.objects.all().last()
         print(ret)
         exists 返回结果是布尔类型
         ret=models.Book.objects.filter(name='三国演义').exists()
         print(ret)
    
         values(*field): queryset对象里套字典
         ret=models.Book.objects.all().values('name','price')
         ret=models.Book.objects.all().values('name')
         print(ret)
         value_list queryset对象里套元组
         ret=models.Book.objects.all().values_list('name','price')
         print(ret)
         distinct() 必须完全一样,才能去重   只要带了id,去重就没有意义了
         ret=models.Book.objects.all().values('name').distinct()
         print(ret)
    
         **************基于双下划线的模糊查询
         查询价格大于89 的书
         ret=models.Book.objects.filter(price__gt='89')
         print(ret)
         查询价格小于89 的书
         ret=models.Book.objects.filter(price__lt='89')
         print(ret)
    
         ret=models.Book.objects.filter(price__lt='89',price='89')
         小于等于
         ret=models.Book.objects.filter(price__lte='89')
         大于等于,
         ret = models.Book.objects.filter(price__gte='89')
         print(ret)
         in 在XX中
         ret=models.Book.objects.filter(price__in=['23.8','89','100'])
         print(ret)
         print(ret.query)
         range 在XX范围内 between and
         ret=models.Book.objects.filter(price__range=[50,100])
         print(ret.query)
         contains  查询名字有'%红%'的书
         ret=models.Book.objects.filter(name__contains='红')
         print(ret)
         print(ret.query)
         icontains 查询名字带p的书,忽略大小写
         ret=models.Book.objects.filter(name__icontains='P')
         print(ret)
         print(ret.query)
             startswith  以XX开头
         ret=models.Book.objects.filter(name__startswith='红')
         print(ret)
         print(ret.query)
         endswith
         ret=models.Book.objects.filter(name__endswith='梦')
         print(ret)
    
         pub_date__year 按年查询
         ret=models.Book.objects.filter(create_data__year='2017')
         print(ret)
  • 相关阅读:
    React简明学习
    react-router简明学习
    react组件生命周期
    在vue中使用css modules替代scroped
    深入理解javascript中的事件循环event-loop
    javascript中的内存管理和垃圾回收
    移动端中的陀螺仪
    基于create-react-app的再配置
    vscode常用设置
    更高效地使用搜索引擎
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/9948270.html
Copyright © 2020-2023  润新知