Python Django框架笔记(六):模板

(一){%%}和{{ }}

1 {% for post in posts %}
2         <a href=""><h2>{{ post.title }}</h2></a>
3         <p>{{ post.body }}</p>
4         <p>{{ post.timestamp }}</p>
5         <hr>
6 {% endfor %}

{%%}:里面的是模板标签,{{}}里面的是变量

{%%}标签:

1 {% if  x == 1%} 
2      <p></p>
3 {% else %}
4     <p></p>
5 {% endif %}
1 {% for a in a_list %}
2         <p>{{ a.name }}</p>
3 {% endfor %}

只有模板变量、字符串、整数和小数可以作为 {% ifequal %} 标签的参数,像字典、列表、布尔类型的是不能用在 {% ifequal %}中的,例如{% ifequal test [1,2,3] %}是错误的

1 {# 比较2个参数的值,user1 user2 #}
2     {% ifequal user1 user2 %}
3         <p></p>
4     {% else %}
5         <p></p>
6     {% endifequal %}

{% include %}模板标签可以显示其他模板的内容{% include template_name %},例如

{% include 'login.html' %}

(二)模板继承

可以在一个HTML页面中定义公共内容(网站logo等),其他页面继承这个模板

1、定义基础模板base.html

<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的博客-所有博客列表</title>
</head>
<style>
</style>
<body>
{% block content %}
{% endblock %}
<div align="center">python django 网站 2018 ©版权所有</div>
</body>
</html>
{% block content %}
    
{% endblock %}
这个标签之间的内容是可以替换的

2、继承,例如:下面这个就是

第一行继承 base.html,后面的就是替换base.html  {% block content %}       {% endblock %} 标签之间的内容

1 {% extends "base.html" %}
2 {% block content %}
3 <form action="/blog/team/" method="post">{% csrf_token %}
4     <div align="center"><table >{{ form }}</table><br>
5     <input type=submit></div>
6 </form>
7 <hr>
8 {% endblock %}

(三)模板渲染

模板创建好后,可以用 context 来传递数据给它。 一个context是一系列变量和它们值的集合,类似于字典。

例如: django.shortcuts 文件中的render函数

def render(request, template_name, context=None, content_type=None, status=None, using=None):
    """
    Return a HttpResponse whose content is filled with the result of calling
    django.template.loader.render_to_string() with the passed arguments.
    """
    content = loader.render_to_string(template_name, context, request, using=using)
    return HttpResponse(content, content_type, status)

第二个参数就是模板,第三个就是要传给模板的数据

def login(request):
    return render(request,'login.html',{'form':LoginPostForm,})

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jojo的技术小屋

原 荐 自己写JSON编辑器

作者:汪娇娇 时间:2018年1月15日 下一篇:自己写代码对比工具 时间过得好快,一下子就2018年了,想起好久没写博客,不觉有些浪费了时光,今天便来补一篇。...

4987
来自专栏Java编程

Java IO详解

初学Java时,一直搞不懂Java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一...

5850
来自专栏pangguoming

web.xml中load-on-startup的作用

如下一段配置,熟悉DWR的再熟悉不过了: <servlet>    <servlet-name>dwr-invoker</servlet-name>    <s...

3317
来自专栏应兆康的专栏

Python Web - Flask笔记2

导入config.py后app.config.from_object(config)

832
来自专栏Petrichor的专栏

python: argparse库 & 命令行解析工具

1003
来自专栏逆向技术

框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解)

       框架原理第三讲,RTTCreate,运行时类型创建.(以MFC框架讲解) 通过昨天的讲解,我们已经理解了运行时类型识别是什么. 比如  CObje...

1946
来自专栏佳爷的后花媛

路由&模块化设计&命名空间

ThinkPHP采用模块化的架构思想,可以支持多模块应用的创建,让应用的扩展更加方便. 先简单说下路由规则:

663
来自专栏zingpLiu

Python 【web框架】之Flask

flask 是Python实现的轻量级web框架。没有表单,orm等,但扩展性很好。很多Python web开发者十分喜欢。本篇介绍flask的简单使用及其扩展...

822
来自专栏程序员的知识天地

1000多个项目中的十大JavaScript错误以及如何避免

通过统计数据库中的1000多个项目,我们发现在 JavaScript 中最常出现的错误有10个。下面会向大家介绍这些错误发生的原因以及如何防止。

1043
来自专栏移动开发

Android 代码规范(自用)

以色值本身的名字来命名,而不是以功能性的名称表达如 btn_bg, tv_bg 这样很容易有些色值重复.

912

扫码关注云+社区