首页 > 其他分享 >Django模版

Django模版

时间:2024-06-10 22:36:16浏览次数:16  
标签:index render 模版 Django html import 模板

一、模板

视图函数只是返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面,目前市面上有非常多的模板系统,其中最知名最好用的是DTL和Jinja2。DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言,当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的情况。

DTL与普通HTML文件的区别

DTL模版是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端。

二、渲染模板

渲染模板有很多种方式,以下有两种常用的方式

1、render_to_string:找到模板,然后将模版编译后渲染成Python的字符串格式,然后在通过HttpResponse类包装成一个HttpResponse对象返回回去。

2、Django提供了一个更加简便的方式,直接将模板渲染成字符串和包装成HttpResponse对象,一步到位。

1、方式一:render_to_string

新建template_intro_demo项目,并在项目中加入front app,在templates中新建一个index.html

项目结构:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    body{
        background-color: pink;
    }
</style>
<body>
这个是从模板中渲染的字符串
</body>
</html>

template_intro_demo.urls.py

from django.urls import path
from front import views

urlpatterns = [
    path("", views.index, name="index"),
]

front.views.py

from django.template.loader import render_to_string
from django.http import HttpResponse

def index(request):
    html=render_to_string("index.html")
    return HttpResponse(html)

 运行结果如下:

2、方式二:render函数

更改front.views.py

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

运行结果:

标签:index,render,模版,Django,html,import,模板
From: https://www.cnblogs.com/longlyseul/p/18241148

相关文章

  • 模版初阶【泛型编程】【函数模版】【类模版】
    模版初阶1.泛型编程如何实现一个通用的交换函数呢?我们先来看一个情景:假设我们需要一个交换的函数,在C语言,我们需要对每一个类型都重新编写一个不同的函数,名字也不能相同。而在c++支持重载后,虽然函数名可以相同,但是我们仍然要对每一种类型都编写一个函数。比如int类要交......
  • 46.django - 多语言配置
    1.Django多语言基础知识多语言站点可以让不同语言的用户更好地使用和理解网站内容,提升用户体验和覆盖范围。为了实现多语言功能,我们将使用Django内置的国际化和本地化支持。我收集了一些知识点整理在这一部分,感兴趣的可以看看。直接跳过此部分也行。也可以看看官方文档:翻译......
  • Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
    系列文章目录Django入门全攻略:从零搭建你的第一个Web项目DjangoORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作DjangoORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解DjangoORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践跨域问题与Django解决......
  • 向 冗长的 Django 文档说再见,迎接 Django Ninja Extra 的精彩
    大家是否曾为那繁杂冗长的Django文档而感到困扰?现在,是时候摆脱它们,全心拥抱DjangoNinjaExtra啦!Django文档大概有1000多页,内容繁杂。而DjangoNinjaExtra文档只有15页,足够我们开发一个现代的API接口了。DjangoNinjaExtra就如同一盏明灯,照亮我们高效开发的道路。......
  • 关于继承djangon内置模型AbstractUser用户认证authenticate一直返回None
    为了想要使用django内置的auth_user表字段,但是有些字段没有,想要定制于是我们可以:首先导入:fromdjango.contrib.auth.modelsimportUser,AbstractUserfromdjango.dbimportmodels然后这么写:classUserInfo(AbstractUser):"""用户信息"""nid=m......
  • Django上传图片时ImageField的max_length报错
    我使用的版本是Django4.2,有一个模型里定义了ImageField,以下面这个为例:classExample(models.Model)image=models.ImageField(blank=True,upload_to=my_image_path,)当我上传图片的时候,django返回了这样一个错误:Ensurethisfilenam......
  • Django 里的表格内容做修改
    当Django里表格内容需要做修改,可以这么操作。先看效果图修改后的表格1.先得在asset_list.html里修改。你们的html有可能跟我不一样<tableborder="1px"><thead><tr><th>ID</th><th>标题</th><th>价格......
  • Django 里实现表格内容上传
    先看效果图:当没有添加数据,就按提交键就会出现报错下面是操作步骤1.先在views.py文件里做添加#在views.pyclassAssetModelForm(forms.ModelForm):#newField=forms.CharField()classMeta:model=models.AssetSetfields=......
  • Django获取 verbose_name 显示到前端
    在models.py文件里,创建各个数据表models#在models.py文件里classAssetSet(models.Model):"""资产表"""name=models.CharField(verbose_name="名称",max_length=32)price=models.IntegerField(verbose_name=&quo......
  • 关于正在开发中的DjangoStarter v3版本
    前言最近做的这个项目大量使用了python及其相关的生态,因此自然而然选择了我的DjangoStarter作为后端框架之前v2版本是用RestFramework做接口的,后面我试用了一次django-ninja之后就喜欢这种类似FastApi的写接口方式正所谓天下苦drf久矣,在新的v3版本框架中,我决定......