【django】django使用自带模板

导读:本篇文章讲解 【django】django使用自带模板,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、配置

在⼯程中创建模板⽬录templates。
在settings.py配置⽂件中修改TEMPLATES配置项的DIRS值:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2、定义模板

在templates⽬录中新建⼀个模板⽂件,如index.html
在这里插入图片描述

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

3.模板渲染

调⽤模板分为两步骤:

  1. 找到模板 loader.get_template(模板⽂件在模板⽬录中的相对路径) -> 返回模板对象

  2. 渲染模板 模板对象.render(context=None, request=None) -> 返回渲染后的html⽂本字符串,context 为模板变量字典,默认值为None request 为请求对象,默认值为None

定义视图:方法一

class UserView(View):
   def get(self,request):
   #获取template对象
   t=loader.get_template('film/index.html')
   #Template().render()==>str
   return HttpResponse(t.render({'color':'yellow'}))

方法2

class UserView(View):
    def get(self,request):
        data={'color':'red'}
        return render(request,'film/index.html',data)

4.模板语法

4.1 模板变量

变量名必须由字⺟、数字、下划线(不能以下划线开头)和点组成。
语法如下:
模板变量可以使python的内建类型,也可以是对象。
路由

urlpatterns = [
    path('register/',views.UserView.as_view()),
]

视图类:

class UserView(View):
  
    def post(self,request):
        content={
            'color': '红⾊',
            'filmdict': {'fname': 'hello我的家⼈', 'people': '⻩渤'},
            'fidlist': [1001, 1002, 1003, 1004, 1005],
            'pub_date': datetime.strptime('2005-10-30', '%Y-%m-%d').date()
        }
        return render(request,'film/index.html',content)

模板内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{ color }}</h1>
    <h1>{{ filmdict }}</h1>
    <h1>{{ filmdict.fname }}</h1>
    <h1>{{ fidlist }}</h1>
    <h1>{{ fidlist.1 }}</h1>
    <h1>{{ pub_date }}</h1>
    <h1>{{ pub_date.year }}</h1>
</body>
</html>

响应结果:
在这里插入图片描述

4.2 模板语句

1)for循环:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        {% for key,value in filmdict.items %}
            <li>{{ forloop.counter }}--{{ key }}---{{ value }}</li>
        {% endfor %}
    </ul>
</body>
</html>

响应结果:
在这里插入图片描述

2)for…empty

for 标签带有⼀个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,进⾏操作。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% for person in person_list %}
        <p>{{ person.name }}</p>
    {% empty %}
        <p>sorry,no person.name</p>
    {% endfor %}
</body>
</html>

3)if判断

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% if age >= 60 and age < 80 %}
        <P>及格</P>
    {% elif age > 80 and age < 95 %}
        <P>良好</P>
    {% else %}
        <P>优秀</P>
    {% endif %}
</body>
</html>

4)⾃动转义标签 autoescape

⾃动转义:将HTML⾃动转换成普通字符串输出。不进⾏标签解析。

{% autoescape off %} 
	Hello {{ name }}
{% endautoescape %}
<hr>
{% autoescape on %} 
	Hello {{ name }}
{% endautoescape %}

响应结果
在这里插入图片描述
更多详细的模板语法参考:https://docs.djangoproject.com/en/2.2/ref/templates/builtins/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74102.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!