反向解析_模板继承_html 转义

反向解析

根据url正则生成一个地址
href = "{% url 'booktest:show' %}"
正则如果分组了,分几个组就传几个参数,反向解析就需要传参,直接空格再后面写就可以了,如:
{% url 'booktest:show' 'p1' 'p2' %}

好处:动态生成链接地址,降低维护成本

示例

# views.py
def reverse(request):
    return render(request, 'reverse.html')

def test(request, p1):
    # 如果正则分组了,这里必须有对应的位置参数来接收,用于接收正则分组匹配到的地址.
    return HttpResponse('holle')
    
# booktest/urls.py
url(r'^(\w+)$',views.test,name='test')

# test2/urls.py4
url(r'^', include('booktest.urls',namespace='booktest'))

# reverse.html
# 如果正则分组了这里必须设置参数,用于设置浏览器的地址,如这里的1122,
<a href="{% url 'booktest:test' '1122' %}">反向解析</a>


模板继承

block:在父模块中预留区域
    {% block con1 %}
        父内容
    {%endblock%}
    
extends:继承,必须写在第一行
    {% extends 'booktest/base.html %}
子模块的填坑:
    {% block con1 %}
        子内容
    {% endblock con1 %}
子内容会把父模块坑中的内容替换
    

html转义

使用context上下文通过视图传递的html标签默认会被转义.

< 会转换为&lt;
> 会转换为&gt;
' (单引号) 会转换为&#39;
" (双引号)会转换为 &quot;
& 会转换为 &amp;

可以使用过滤器取消转义
content={'t1':'<h1>上下文</h1>'}
{{ t1 | safe }}
或者使用代码块标签
{{autoescape off}}
{{t1}}
{{endautoescape}}

变量定义过默认值的形式

当视图没有传入对应的上下文时,是带标签格式输出 默认值 ,
当有传入,则按传入的上下文输出
{{ t2 | default:"<h1>默认值</h1>"}}
如果想不带格式,完整的输入整个标签<h1>默认值</h1>,则需要手动转义.

posted @ 2018-05-13 20:21  fanlei5458  阅读(334)  评论(0编辑  收藏  举报