美文网首页
Django使用模版——中级(3)

Django使用模版——中级(3)

作者: jshan | 来源:发表于2018-09-12 01:23 被阅读0次

    for 循环的特殊用法

    forloop 的用法

    说明: forloopfor 循环中固有的一个变量对象,该对象中,包含有如 counter/counter0等属性,具体说明如下:

    语法 说明
    forloop.counter 索引从1开始算,该变量得到的是此时循环变量的下标
    forloop.counter0 索引从0开始算,该变量得到的是此时循环变量的下标
    forloop.revcounter 索引从最大长度到1,该变量类似于forloop.counter的逆序
    forloop.revcounter0 索引从最大长度-1到0,该变量类似于forloop.counter0的逆序
    forloop.first 当遍历的元素为第一项时为真,该变量是一个bool值
    forloop.last 当遍历的元素为最后一项时为真,该变量是一个bool值
    forloop.parentloop 用在嵌套的for循环中,获取上一层for循环的forloop,该变量得到的是上一层的forloop对象

    所以在 for 循环体中,不要自定义变量 forloop

    for empty 用法

    功能: 当列表为空时使用

    <ul>
    {% for item in items %}
        <li>{{ item }}</li>
    {% empty %}
        <li>无数据</li>
    {% endfor %}
    </ul>
    

    if 条件判断

    if 条件判断中,可以支持如下的判断场景,如: and / or / not / in / not in
    也支持大小判断,如: > / >= / < / <= / == / !=

    获取页面内的内容

    如获取页面中的 当前用户 / 当前网址 / 当前GET参数
    首先是需要在工程的 settings.py 中添加如下的装饰器

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [BASE_DIR + "/templates",],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',  # 这里是template页面中能否获取上述信息的关键
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    

    然后就是在模版页面中获取上述参数的方法

    获取方法 获取结果
    {{ request.user }} 当前用户,匿名的时候为: AnonymousUser
    {{ request.path }} 当前网址,去除了hostname和port,且不包括参数
    {{ request.GET.urlencode }} 当前GET参数

    所以如果要想拼接出当前浏览器的url内容的话,可以使用如下方法: {{ request.path }}/?{{ request.GET.urlencode }}

    相关文章

      网友评论

          本文标题:Django使用模版——中级(3)

          本文链接:https://www.haomeiwen.com/subject/upzpgftx.html