Django模板层和变量

模板

  • 模板是可以根据字典数据动态变化的HTML网页
  • 模板可以根据视图中传递的字典数据动态生成响应的HTML页面

模板配置

创建模板文件夹<项目名>/templates

在settings.py中templates配置项

1. BACKEND:指定模板的引擎
2. DIRS:模板的搜索目录
3. APP_DIRS:是否要在应用中的templates文件夹中搜索模板文件
4. OPPTIONS:有关模板的选项
  • 配置项中需要修改的
    设置DIRS - ‘DIRS’: [Path.joinpath(BASE_DIR, ‘templates’)],

模板的加载方法

  1. 通过loader获得模板,通过httpresponse进行响应
    from django.template import loader
    # 1. 通过loader加载模板
    t = loader.get_template("模板文件名")
    # 2. 将t改成HTML字符串
    html = t.render(字典数据)
    # 3. 用响应对象将转换的字符串内容返回给浏览器
    return HttpResponse(html)
    
  2. 使用render()直接加载并响应模板
    from django.shortcuts import render
    return render(request, '模板文件名', 字典数据)
    # 字典数据可以用locals()函数自动打包所有变量为字典
    

视图层与模板层之间的交互

  1. 视图函数中可以将python变量封装到字典中传递到模板
    def xxx_view(request):
    	dic = {'a':1,'b':[1,2]}
    	return render(request,'xxx.html',dic)
    
  2. 模板层中我们可以用{{变量名}}的语法,调用视图传进来的变量 jinja用法详细可看jinja专栏

模板的变量

  • str 字符串
  • int 整形
  • list 数组
  • tuple 元祖
  • dict 字典
  • func 方法
  • obj 类实例化的对象
def test_html_param(request):

    dic = {}
    dic['int'] = 88
    dic['str'] = 'guoxiaonao'
    dic['lst'] = ['Tom', 'Jack', 'Lily']
    dic['dict'] = {'a':9, 'b':8}
    dic['func'] = say_hi
    dic['class_obj'] = Dog()
    dic['script'] = '<script>alert(1111)</script>'


    return render(request, 'test_html_param.html', dic)	
<h3>int 是 {{ int|add:"2" }}</h3>
<h3>str 是 {{ str|upper }}</h3>
<h3>lst 是 {{ lst }}</h3>
<h3>lst 是 {{ lst.0 }}</h3>
<h3>dict 是 {{ dict }}</h3>
<h3>dict['a'] 是 {{ dict.a }}</h3>
<h3>function 是 {{ func }}</h3>
<h3>class_obj 是 {{ class_obj.say }}</h3>
<h3>script 是 {{ script|safe }}</h3>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值