Django模板路径的查找顺序、模板变量的使用

# 模版查找路径:

在项目的settings.py文件中。有一个TEMPLATES配置,这个配置包含了模板引擎的配置,模板查找路径的配置,模板上下文的配置等。模板路径可以在两个地方配置。

1. `DIRS`:这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板。
2. `APP_DIRS`:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates文件加中查找模板。
3. 查找顺序:比如代码render('list.html')。先会在DIRS这个列表中依次查找路径下有没有这个模板,如果有,就返回。如果DIRS列表中所有的路径都没有找到,那么会先检查当前这个视图所处的app是否已经安装,如果已经安装了,那么就先在当前这个app下的templates文件夹中查找模板,如果没有找到,那么会在其他已经安装了的app中查找。如果所有路径下都没有找到,那么会抛出一个TemplateDoesNotExist的异常。

 

# 模版变量:


1. 在模版中使用变量,需要将变量放到`{{ 变量 }}`中。
2. 如果想要访问对象的属性,那么可以通过`对象.属性名`来进行访问。
    ```python
    class Person(object):
        def __init__(self,username):
            self.username = username

    context = {
        'person': p
    }
    ```
    以后想要访问`person`的`username`,那么就是通过`person.username`来访问。
3. 如果想要访问一个字典的key对应的value,那么只能通过`字典.key`的方式进行访问,不能通过`中括号[]`的形式进行访问。
    ```python
    context = {
        'person': {
            'username':'zhiliao'
        }
    }
    ```
    那么以后在模版中访问`username`。就是以下代码`person.username`
4. 因为在访问字典的`key`时候也是使用`点.`来访问,因此不能在字典中定义字典本身就有的属性名当作`key`,否则字典的那个属性将编程字典中的key了。
    ```python
    context = {
        'person': {
            'username':'zhiliao',
            'keys':'abc'
        }
    }
    ```
    以上因为将`keys`作为`person`这个字典的`key`了。因此以后在模版中访问`person.keys`的时候,返回的不是这个字典的所有key,而是对应的值。
5. 如果想要访问列表或者元组,那么也是通过`点.`的方式进行访问,不能通过`中括号[]`的形式进行访问。这一点和python中是不一样的。示例代码如下:
    ```python
    {{ persons.1 }}
    ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值