模板语言层

一 模板简介

  1. 作为Web框架,Django提供了模板,可以很便利的动态生HTML。
  2. 模版系统致力于表达外观,而不是程序逻辑。
  3. 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。
  4. 模板包含:
    –HTML的静态部分
    –动态插入内容部分
  5. Django模板语言,简写DTL,定义在django.template包中,由startproject命令生成的settings.py定义关于模板的值:
    –DIRS定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件
    –APP_DIRS告诉模板引擎是否应该在每个已安装的应用中查找模板,这种便于发布应用
–模版的执行
def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)
from django import template
t = template.Template('My name is {
   { name }}.')
c = template.Context({
  'name': 'Adrian'})
print t.render(c)
import datetime
from django import template
import DjangoDemo.settings

now = datetime.datetime.now()
fp = open(settings.BASE_DIR+'/templates/Home/Index.html')
t = template.Template(fp.read())
fp.close()
html = t.render(template.Context({
  'current_date': now}))
return HttpResponse(html
from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    t = get_template('current_datetime.html')
    html = t.render(Context({
  'current_date': now}))
    return HttpResponse(html)
return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))
–模板语法重点
变量:{
   { 变量名 }}

    1 深度查询 用句点符

    2 过滤器

标签:{%   tag    %}

二 模板语法之变量

在 Django 模板中遍历复杂数据结构的关键是句点字符–
**语法:{{变量名}}**

视图(view)

def template_test(request):
    name = 'AAA'
    list = ['AAA', 1, '18']
    dic = {
  'name': 'AAA', 'age': 18}
    list2 = [
        {
  'name': 'AAA', 'age': 18},
        {
  'name': 'AAA2', 'age': 19},
        {
  'name': 'BBB', 'age': 20},
        {
  'name': 'CCC', 'age': 23}
    ]
    list3=[]
    class Person:
        def __init__(self, name):
            self.name = name

        def test(self):
            print('test函数')
            return 11

        @classmethod
        def test_classmethod(cls):
            print('类方法')
            return '类方法'

        @staticmethod
        def static_method():
            print('静态方法')
            return '静态方法'

    aaa = Person('AAA')
    bbb = Person('BBB')
    person_list = [aaa, bbb]
    bo = True
    te = test()
    import datetime
    now=datetime.datetime.now()
    link1='<a href="https://www.baidu.com">点我<a>'
    from django.utils import safestring
    link=safestring.mark_safe(link1)
    # html特殊符号对照表(http://tool.chinaz.com/Tools/htmlchar.aspx)
    # 这样传到前台不会变成特殊字符,因为django给处理了
    dot='&spades;'


    # return render(request, 'template_index.html', {'name':name,'person_list':person_list})
    return render(request, 'template_index.html', locals())

前端(html)

<p>{
   { name }}</p>
<p>{
   { list }}</p>
<p>{
   { dic }}</p>
<p>{
   { AAA }}</p>
<p>{
   { person_list }}</p>
<p>{
   { bo }}</p>
<p>{
   { te }}</p>

<hr>
<h3>深度查询句点符</h3>
<p>{
   { list.1 }}</p>
<p>{
   { dic.name }}</p>
<p>{
   { aaa.test }}</p>
<p>{
   { aaa.name }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值