美文网首页
Django的记录(五) 模板

Django的记录(五) 模板

作者: IT_小马哥 | 来源:发表于2019-10-19 22:58 被阅读0次

    模板

    1. DTL(django templates,language)django内置,完美兼容
    2. Jinjia2(django支持)

    模板用到的函数

    render 将模板加载并包装成对象直接返回

    def index(request):
        #三个参数,第一个必须是request,然后是模板,然后是传递给模板的值(字典)
       return render(request,'index.html',context = context)
    

    HttpResponse,就返回一个模板或者字符串

    def index(request):
        HttpResponse(html)
    

    模板路径

    设置模板

    • BASE_DIR代表的是项目所在的当前路径
    • 'DIRS': [os.path.join(BASE_DIR, 'templates')]
    • 'APP_DIRS': True,

    APP_DIRS 为True,开始在DIRS下依次查找模板,如果找不到模板,就会检查当前视图的APP是否注册,如果注册,就会去APP下面寻找模板,如果还找不到,就会去其他已经注册的APP中查找模板

    要使用APP下的模板,需要将APP在setting注册

    模板标签

    if

    • 和python中的运算一样,有in、not等
     {% if age < 18 %}
        <p> 未成年</p>
      {% elif age == 18 %}
        <p> 卡哇伊进入</p>
      {% else %}
        <p> 成年</p>
     {% endif %}
    

    for...in标签

    • reversed 反转遍历
    • counter0 下标从0开始(默认从0开始)
    • recounter0 , 反向输出下标(默认到1)
    • forloop 代表循环,first是第一次,last是最后一次
    <ul>
        {% for hero in heros %}
            <li>{{ hero }}</li>
        {% endfor %}
    </ul>
    
    
    <td>{{ forloop.counter }}</td>
    <td>{{ forloop.counter0 }}</td>
        {% if forloop.first %}
            <tr style="background: pink;">
        {% elif forloop.last %}
            tr style="background: red">
        {% else %}
            <tr>
        {% endif %}
    
    • for ...in ..empty
    • 当for循环为空的时候执行empty,只要for循环执行过就不会执行empty
    {% for comment in comments %}
        <li>{{ comment }}</li>
    {% empty %}
        <li> 没有评论</li>
    {% endfor %}
    

    字典

    • keys:获取所有的key
    • values:获取所有的value
    • items:获取的是元祖
    {% for key in person.keys %}
        <li>{{ key }}</li>
    {% endfor %}
    

    url标签

    • book就是url的name
    <li><a href="{% url 'book' %}">读书</a></li
    
    • 传递一个参数的链接
    <li><a href="{% url "detail" book_id = '1' %}">最火的</a></li>
    
    • 登录完毕跳转的链接实现
    <li><a href="{% url "login" %}?next=/">登录</a></li>
    
    def login(request):
        next = request.GET.get('next')
        text = "登录完成跳转的页面{0}".format(next)
        return HttpResponse(text)
    

    相关文章

      网友评论

          本文标题:Django的记录(五) 模板

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