Django render()函数页面渲染

1, render() 函数

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

复制代码
from django.shortcuts import render


render(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 添加视图函数

python 复制代码
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 response



def test_render(request):
    return render(request, '2/test_render.html', {'info':'hello django'}, content_type='text/html; charset=utf-8')

2.2 添加html代码

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

</body>
</html>

2.3 添加路由地址

python 复制代码
from django.urls import path, re_path
from . import views


urlpatterns = [
    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

相关推荐
喂完待续26 分钟前
【Tech Arch】Spark为何成为大数据引擎之王
大数据·hadoop·python·数据分析·spark·apache·mapreduce
王者鳜錸2 小时前
PYTHON让繁琐的工作自动化-猜数字游戏
python·游戏·自动化
若天明3 小时前
深度学习-计算机视觉-微调 Fine-tune
人工智能·python·深度学习·机器学习·计算机视觉·ai·cnn
倔强青铜三3 小时前
苦练Python第39天:海象操作符 := 的入门、实战与避坑指南
人工智能·python·面试
一百天成为python专家4 小时前
Python循环语句 从入门到精通
开发语言·人工智能·python·opencv·支持向量机·计算机视觉
Sunhen_Qiletian4 小时前
朝花夕拾(五)--------Python 中函数、库及接口的详解
开发语言·python
三年呀5 小时前
标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
网络·python·安全
关山6 小时前
MCP实战
python·ai编程·mcp
悠哉悠哉愿意6 小时前
【Python语法基础学习笔记】if语句
笔记·python·学习
Q_Q19632884756 小时前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php