1、render_to_reponse()

    不同于render,render_to_response()不用包含request,直接写template中文件

  2、locals()

    如果views文件中的函数里变量过多的话,可以在render或render_to_response()里面直接增加render(request,'index.html',locals())这样在前端界面渲染的时候可以直接写变量名

    locals()的缺点是不想传递过去的变量也传递过去了

  3、JS中的方法:

    a: hover(f1,f2)

      例子:

      $(".outer").hover(f1,f2) 其中f1表示鼠标进入时操作,f2表示鼠标退出时操作

      hover比mouseover()和mouseout()的优点在于hover一个方法可以表示两个动作

      $(".outer").hover(function(){

        clearInterval(time);

        },function(){

        time=setInterval(move,1500)#每一点五秒执行setInterval动作

         })

    b:关于轮播图乱序问题解决:

    $('.num .li').eq(i).stop().fadeIn(1000).siblings().stop().fadeOut(1000);#加入stop表示先将播放全部停止然后在做fadeIn和fadeOut操作

   4、template中,如果要简单标注索引可以使用

    {{  forloop.counter}}  从1开始

    {{ forloop.counter0}} 从0开始

    {{forloop.revcounter}} 从最大开始

    {{ forloop.revcounter0}}从最大开始到0结束

            模板语言中,引用base模板中内容,使用{{ block.super }}

  5、ORM操作

  增加:

    #create方式一:Author.objects.create(name="Alvin")   

    #create方式二:Author.objects.create(**{"name":"Alvin"})  推荐使用

    如果有外键:

      一对多:

      <1>models.Book.objects.create(title="python",price=2,publish_id=2)  #其中publish为外键关联,默认使用id,所以publish_id自动生成

      <2>models.Book.objects.create(title="python",price=2,publish=obj)#publish绑定的是一对多里面一的那个对象,也就是publish对应的   推荐

                                      #obj代表一个object对象

                  

      多对多:

      1、自动创建

        add()   remove()

      -----------正向绑定

       book=models.Book.objects.filter(id=2)[0]

      authors=models.Author.objects.filter(id__gt=2)    

      book.author.add(*authors)

      ------------反向绑定

      authors=models.Author.objects.filter(id=2)[0]

      books=models.Book.objects.filter(id__gt=2)     

      author.book_set.add(*books)                  #book_set组合在一起组成一个QuerySet ,这个是django自带的功能

    #save方式一:author=Author(name="alvin")

            author.save()

    #save方式二:authorAuthor()

          author.name="alvin"

          author.save()

    2、手动创建

       class BOOKAuthor(models.Model):

        author=models.ForeignKey('Author')

        book=models.ForeignKey('Book')

        class Meta: 

          unique_together=['author','book']  #联合唯一

    自己写第三张表

    ManytoMany 通过两个ForeignKey完成

    OnetoOne     通过一个ForeignKey,uiqueTrue来完成

    

  删除:

    models.Book.objects.filter(id=1).delete()

  改:

    第一种:author=Author.objects.get(id-5)

        authort.name='tenglan'

        author.save()

    第二种:Publisher.objects.filter(id=5).update(name='Ameriacan publshler‘)#不能用get(id=2)来查找锁定

 

  查询API:

    filter(**kwargs):   它包含了所有刷选条件匹配的对象

    all():          查询所有结果

    get(**kwargs):            返回与所筛选条件匹配对象,返回结果有且只有一个,如果一个都没匹配到会报错

    ---------------------------------

    下面方法都是对查询结果再进行处理,日不objects.filter().values()

    vaules(*filed)       返回一个valuequeryset-一个特殊的queryset,运行后得到的并不是一系列model实例对象,而是一个可迭代的字典序列

    exclude(**kwargs)    包含了与所给刷选条件不匹配的对象

    order_by(*filed)     对查询结果排序,如果按照从大到小排序,可以使用order_by("-id") 这种方式来进行

    reverse()      对结果反向排序

    distinct()         从返回结果中剔除重复记录

    values_list(*filed)   它与values()非常类似,返回的是一个元组序列,values返回的是字典序列

     count()          返回数据库中匹配查询QuerySet的对象数量

       first()          返回第一条记录

    last()                      返回最后一条记录

     exists()      如果queryset包含数据,返回True,否则返回Flase

 

  

    惰性机制:

    所谓惰性机制,Pbulisher.objects.all()或者.filter()等都只是返回一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行。

    QuerySet特点:

    1、可迭代

    2、可切片

    #objs=models.Book.objects.all()#(obj1,obj2,obj3,.)

    #QuerySet 可迭代

    for obj in objs:每一个obj就是一个行对象

      print("obj:",obj)

    #QuerySet 可切片

    #print(objs[1])

    #print(objs[1:4])

    #print(objs[::-1])

注意,这里因为update返回的是一个整形,所以没法用query属性,对于每次创建一个对象,想显示对应的row sql,需要在settings加上日志记录部分:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

LOGGING
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-27
  • 2021-06-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案