django学习第81天Django模板层2

Posted ye-hui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]) 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) 1 xx 12.3 2 xx 12.3 3 xxx 12.3

 

















以上是关于django学习第81天Django模板层2的主要内容,如果未能解决你的问题,请参考以下文章

Python学习第110天(Django的万能句点号过滤器)

Python学习第123天(Django回头看:模板控制语句filtersimple_tag)

Python学习第122天(Django回头看:视图函数redirect模板变量过滤器)

Django之模板层

Django学习第4篇:Django之模板继承

Python学习第120天(Django1和2之间的区别)