博客
关于我
Django教程 —— Django模板
阅读量:552 次
发布时间:2019-03-09

本文共 1470 字,大约阅读时间需要 4 分钟。

如何向请求者返回一个漂亮的页面呢?肯定需要用到 html、css,如果想要更炫的效果还要加入 js,问题来了,这么一堆字符串全都写到视图中,作为 HttpResponse() 的参数吗?看起来确实不太美观。我们拾起一粹得知。

在 Django 项目中,将前端的内容定义在模板中,然后再把模板交给视图调用,各种漂亮、炫酷的效果就出现了。这种方法不仅能让代码层次分明,还能避免字符串拼接带来的错误。

让我们考察一个典型的实现步骤。

创建模板在 Django 项目下创建 templates 目录,然后在创建 book 目录,以存放 book 应用的模板文件。好比如下图所示:

网上图片可能会影响加载速度,一般建议使用本地存储图片。

配置模板进入 settings.py ,找到 TEMPLATES 配置选项。建议将模板目录加入 friendly_name ,即Backend可使用 'DIRS': [BASE_DIR / 'templates'] 搭配。

检测模板文件路径时,确保 BASE_DIR 是你的项目绝对路径。类似这样:

BASE_DIR = Path(file).resolve().parent.parent

最终,进入项目终端,输入:

python manage.py shell

输入以上命令后,记得关闭终端后清理 cache。

定义模板新建 templtes/book/index.html 文件。以下是一个简单的示例:

    
{% block title %}图书信息{% endblock %}

{% block title %}图书信息{% endblock %}

    {% for book in books %}
  • 标题: {{ book.title }} - 作者: {{ book.author }}
  • {% endfor %}

在模板中可以灵活使用变量,用双引号包裹静态文本,单列包裹变量。这样书写既简洁又易于维护。

调用模板在视图中调用模板需执行三步骤:

  • 获取模板
  • 定义上下文
  • 渲染模板
  • 实现代码如下:

    class InfoView(View):def get(self, request):books = BookInfo.objects.all()tmp = loader.get_template('book/index.html')context = {'title': '图书信息','books': books,}return tmp.render(context)

    或者详尽点:

    def index(request):from django.template import loaderbooks = BookInfo.objects.select_related('author').all()context = {'title': '图书信息','books': books,}return loader.get_template('book/index.html').render(context)

    尽量每天定期执行项目执行 redisclear 例如:

    python manage.py cache_tagspython manage.py cache_prefixpython manage.py restart

    等待回答民智的复杂场景,再觉得有什么可优化的空间。

    转载地址:http://bkzpz.baihongyu.com/

    你可能感兴趣的文章
    Qt知识:视图框架QGraphicsWidget详解
    查看>>
    SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
    查看>>
    Qt知识: 画刷风格
    查看>>
    QT的OpenGL渲染窗QOpenGLWidget Class
    查看>>
    QT的C++程序加载动态链接库DLL(Linux下是so)的方式
    查看>>
    QT界面操作1:如何跟踪鼠标位置?
    查看>>
    Qt环境搭建(Visual Studio)
    查看>>
    QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
    查看>>
    QT样式表——url路径
    查看>>
    QT数据库(三):QSqlQuery使用
    查看>>
    QT教程5:消息框
    查看>>
    SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
    查看>>
    pom.xml中提示web.xml is missing and <failonmissingw>...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    QT教程2:QT5的体系构架
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    QT教程1:ubuntu18.04安装QT5
    查看>>
    POP-一个点击带有放大还原的动画效果
    查看>>
    POP3 协议在计算机网络中的优缺点
    查看>>