• django学习第81天Django模板层2(单表查询.模块的导入和继承.静态文件配置)


    补充:
    http请求的本质是socket

    web应用:
    -S包括两部分:web服务器+application
    -目前阶段django项目用的web服务器是:wsgiref+application
    -上线会用uwsgi+application
    -web服务器(本质是socket)都实现了wsgi协议
    -wsgi:web服务网关接口,是一个协议

    a:socket
    b:路由映射关系
    c:模板语言的渲染
    django: a:用别人的 b:自己写的 c:自己写的
    flask: a:用别人的 b:自己写的 c:用别人的
    tornado: a:自己写的 b:自己写的 c:自己写的

    一.模块的导入和继承

            -模板的导入:
                1 写一个好看的模板
                2 在想用的地方:
                    {% include '好看模板的名字.html' %}
            -模板的继承
                -写一个母版,base.html(留一些block(盒子)),留的盒子越多,可扩展性就越高
                    {% block top %}
    
                    {% endblock %}
                -使用:
                    -在一个新的html中
                        -{%extend 'base.html'%}
                        -扩写留的对应的盒子
                            {% block top %}
                                扩写的内容
                            {% endblock %}
                -注意:
                    1 扩写的时候,盒子的位置无所谓,只要名字对应正确,就会正确填充
                    2 盒子可以不扩写,不写就是原来的样子
                    3 如果要显示母版盒子中原来的东西,需要
                        {{block.super}}----写在哪,原来的内容就放在哪
                        

    二.静态文件相关

    1.在setting中:
    STAIICFILES_DIRS=os.path.join(BASE_DIR,'文件夹名字')
    2.在模板中使用:
    (1) 直接写死的:<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"> (2) 用static标签: {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.css' %}"> (3) 用get_static_prefix: {% load static %} <link rel="stylesheet" href="{% get_static_prefix %}bootstrap-3.3.7-dist/css/bootstrap.css">

    三.inclusion_tag:返回html片段

            1 前面几步跟标签和过滤器一样
            2 装饰器:@register.inclusion_tag('inclusiontag.html',name='lqz'),第一个参数是要操作的模板
            3 返回一个字典,字典中的值,可以在inclusiontag中使用
            4 使用:
                {%load 你写的那个py文件%}
                {% 函数名字 参数 参数 %}

    四.模型层:

           1. 单表操作
                -增加,删,改:两种方式:queryset对象的方法,book对象的方法
                -改:需要用save()
                -get()方法:查询的数据有且只有一条,如果多,少,都抛异常
            2.单表查询
                -<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(): 从返回结果中剔除重复纪录 3.单表基于双下划线的模糊查询 Book.objects.filter(price__in=[100,200,300]) # 在列表范围内 Book.objects.filter(price__gt100)     # 大于 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]) # 在100--200之间 Book.objects.filter(title__contains="python") # 包含 python Book.objects.filter(title__icontains="python") # 不区分大小写的包含 Book.objects.filter(title__startswith="py")  # 以XX开头 Book.objects.filter(pub_date__year=2012) #年
  • 相关阅读:
    华为机试正式版(西安c/c++/java),今天下午去机试的题目,新奇出炉了!
    嘉定三屠与扬州十屠
    【spring】【spring boot】获取系统根路径,根目录,用于存储临时生成的文件在服务器上
    【git】【Idea】git刷新获取远程分支列表,可以在idea上看到最新的远程分支列表
    【spring boot】【idea】100.idea新建一个spring boot项目
    【java】Execption的 e.getMessage()为null的解决方法
    【java】java反射获取属性和属性值,java反射设置属性和属性值
    【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
    【HTML】前台input上传限制文件类型
    【Navicat】使用navicat执行sql 查询速度很慢解决方法
  • 原文地址:https://www.cnblogs.com/ye-hui/p/10265224.html
Copyright © 2020-2023  润新知