当前位置: 首页 > news >正文

Django render()函数页面渲染

1, render() 函数

在Django框架中,render() 函数是一个非常有用的快捷方式,用于从视图函数返回一个完整的HTTP响应。它负责将给定的模板与上下文数据结合,渲染出最终的HTML页面,并返回一个HttpResponse对象。

from django.shortcuts import renderrender(request, template_name, context=None, content_type=None, ststus=None,using=None)

下面是 render() 函数的参数及其含义:

  1. request (HttpRequest object):

    • 这是Django视图函数的第一个参数,代表当前的HTTP请求对象。它包含了请求的详细信息,如请求方法、路径、查询参数、表单数据等。
  2. template_name (str):

    • 这是要渲染的模板文件的路径。这个路径是相对于Django的模板目录设置的。例如,如果模板位于 templates 目录下的 my_app 子目录中,那么路径可能是 'my_app/my_template.html'
  3. context (dict, optional):

    • 这是一个字典,包含了传递给模板的变量和它们的值。这些变量可以在模板中使用。例如,{'name': '张三', 'age': 30}
  4. content_type (str, optional):

    • 这是一个可选参数,用于指定响应的内容类型。默认情况下,Django会根据模板文件的扩展名自动设置内容类型。例如,如果模板是HTML,Django会设置为 'text/html'
  5. status (int, optional):

    • 这是一个可选参数,用于设置HTTP响应的状态码。默认情况下,Django会使用200(表示成功)。例如,如果你想要返回一个404错误,你可以设置 status=404
  6. using (str, optional):

    • 这是一个可选参数,用于指定要使用的模板引擎。如果你的项目中配置了多个模板引擎,你可以通过这个参数指定使用哪一个。例如,如果你有两个模板引擎,一个用于HTML模板,另一个用于XML模板,你可以通过 using 参数指定使用哪一个。

2, 示例

2.1 添加视图函数

from django.http import HttpResponse
from django.shortcuts import render
from django.urls import reverse
def index(request):return HttpResponse("app2 的index")# 反向解析
def url_reverse(request):# 使用reverse()方法反向解析print('解析结果:'+ reverse("app2_url_reverse"))  #  使用reverse()方法反向解析 ,reverse("app2_url_reverse") 对应urls的 name='app2_url_reverse'return render(request, "2/url_reverse.html")def test_get(request):print(request.get_host()) # 域名加端口print(request.build_absolute_uri()) # 获取完整的请求URI,包括查询字符串print(request.path) # 获取访问路径,不含参数print(request.get_full_path()) # 获取访问路径,不含参数print(request.method) # 获取请求中使用的HTTP方式(POST/GET)print(request.GET)  # 获取GET请求的参数print(request.META["HTTP_USER_AGENT"]) # 用户浏览器的user-agent字符串print(request.META["REMOTE_ADDR"]) # 客户端IP地址print(request.GET.get('username')) # 获取get参数return HttpResponse("")# 获取请求中的使用HTTP方式(POST/GET)
def test_post(request):print(request.method)print(request.POST.get('username'))return render(request, '2/test_post.html')def test_response(request):response = HttpResponse()response.write("<h1>hello django</h1>")response.write("<br>")response.write(response.content)response.write("<br>")response.write(response['Content-Type'])response.write("<br>")response.write(response.status_code)response.write("<br>")response.write(response.charset)response.write("<br>")return responsedef test_render(request):return render(request, '2/test_render.html', {'info':'hello django'}, content_type='text/html; charset=utf-8')

2.2  添加html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div>接收变量<br>{{info}}</div></body>
</html>

2.3  添加路由地址

from django.urls import path, re_path
from . import viewsurlpatterns = [path('index', views.index, name='index'),path('url_reverse', views.url_reverse, name='app2_url_reverse'), #  使用reverse()方法反向解析 ,name对于视图的reverse("app2_url_reverse")path('test_get', views.test_get, name='test_get'),path('test_post', views.test_post, name='test_post'),path('test_response', views.test_response, name='test_response'),path('test_render', views.test_render, name='test_render'),
]

2.4  访问页面

http://127.0.0.1:8000/app2/test_render

相关文章:

  • 性能测试2【搬代码】
  • 【办公类-04-02】华为助手导出照片读取拍摄时间分类导出,视频不行)
  • 【小海实习日记】PHP安装
  • 如何通过HarmonyOS开发下肢康复外骨骼系统
  • 如何用AI大模型打造个性化内容页面展示,提升用户阅读体验和内容传播效果
  • ThinkBook 16 2024 Ubuntu 触控板问题解决
  • 【紧急警示】Locked勒索病毒利用最新PHP远程代码执行漏洞大规模批量勒索!文末附详细加固方案
  • C语言结构体和共用体
  • 虚拟化 之四 详解 jailhouse 使能和创建 Cell 的工作流程
  • vue面试题八
  • 事务中存在多线程,怎么处理?
  • 实现开源可商用的 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)
  • 20240612每日前端---------transform实现水平垂直居中
  • 单北斗定位手持终端的优势
  • 计算机体系结构学习(一)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 11111111
  • Fastjson的基本使用方法大全
  • gulp 教程
  • Hibernate【inverse和cascade属性】知识要点
  • Javascript编码规范
  • Java的Interrupt与线程中断
  • js递归,无限分级树形折叠菜单
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • QQ浏览器x5内核的兼容性问题
  • React-Native - 收藏集 - 掘金
  • React-redux的原理以及使用
  • Sublime text 3 3103 注册码
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 构建二叉树进行数值数组的去重及优化
  • 和 || 运算
  • 聊聊sentinel的DegradeSlot
  • 前端存储 - localStorage
  • 前端面试之CSS3新特性
  • 如何实现 font-size 的响应式
  • 思否第一天
  • 怎么把视频里的音乐提取出来
  • 阿里云API、SDK和CLI应用实践方案
  • 整理一些计算机基础知识!
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​Redis 实现计数器和限速器的
  • #include
  • $.ajax()方法详解
  • (13)DroneCAN 适配器节点(一)
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)计算机毕业设计大学生兼职系统
  • (黑马C++)L06 重载与继承
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (转)Oracle存储过程编写经验和优化措施
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...