Django项目创建之---Templates及扩展(二)

此文是继承博主的上一篇博客:http://blog.csdn.net/yuzhengfei7/article/details/78242409

1.创建步骤
在APP的根目录下创建名为templates的目录,然后在该目录
下创建HTML文件(文件上鼠标右键,选择New–>HTML File),命名为index.html,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{hello}}</h1>
</body>
</html>

2.在views.py中返回render(),代码如下:

from sys import modules
from django.shortcuts import render   # render为Django自动添加,render为渲染
from django.http import HttpResponse
from . import models

def index(request):
    # 通常传递三个参数,第一个为request,请求对象本身;
    # 第二个为模版文件,即页面,即index.html;
    # 第三个为传递到前端的数据
    return render(request, 'index.html', {'hello': 'Hello, Blog!'})  

3.运行结果(浏览器地址栏输入:localhost:8000/blog/index)
这里写图片描述

扩展
DTL的初步使用:render()函数中支持一个dict类型(字典类型)参数,即键值对;该字典是后台传递到模板的参数,键为参数名;在模板中使用{{参数名}}来直接使用。

注意事项
问题:Django查找template,Django按照INSTALLEN_APPS
中添加顺序查找templates,不同的APP下Templates目录中的同名.html文件会造成冲突。

解决templates冲突方案:在APP的templates目录下创建以APP名为名称的目录,将html文件放入新创建的目录下,即在中间加一层APP的名来区分相同名称的.html文件。

小技巧
第一个:什么是templates过滤器?
1.写在模板中,属于Django模板语言
2.可以修改模板的变量,从而显示不同的内容

第二个:怎么使用Templates过滤器?

{{ value | filter }}

例如:{{ list_nums | length}} , length表示前面list的长度,因此,此{{ }}中显示的内容就不再是前面的list的内容了,而是list的长度

第三个:过滤器怎么叠加?

{{ value | filter2 | filter2 | …}}

如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Edit Page</title>
</head>
<body>
<form action="{% url 'blog:edit_action' %}" method="post">
    {% csrf_token %}
{#    {% if article %}#}
        <input type="hidden" name="article_id" value="{{ article.id | default:'0' }}">
        <label>文章标题
            <input type="text" name="title" value="{{ article.title }}">
        </label>
        <br/>
        <label>文章内容
            <input type="text" name="content" value="{{ article.content }}">
        </label>
        <br/>
{#    {% else %}#}
{#        <input type="hidden" name="article_id" value="0">#}
{#        <label>文章标题#}
{#            <input type="text" name="title" value="">#}
{#        </label>#}
{#        <br/>#}
{#        <label>文章内容#}
{#            <input type="text" name="content" value="">#}
{#        </label>#}
{#        <br/>#}
{#    {% endif %}#}
    <input type="submit" value="修改">
</form>
</body>
</html>

如果上述代码不在{% if article %}下面的value="{{ article.id | default:‘0’ }}"中加入过滤器,就必须在下面重新写上一段特别冗余的{% else %}}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值