• Django render()函数页面渲染


    1, render() 函数

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

    1. from django.shortcuts import render
    2. 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 添加视图函数

    1. from django.http import HttpResponse
    2. from django.shortcuts import render
    3. from django.urls import reverse
    4. def index(request):
    5. return HttpResponse("app2 的index")
    6. # 反向解析
    7. def url_reverse(request):
    8. # 使用reverse()方法反向解析
    9. print('解析结果:'+ reverse("app2_url_reverse")) # 使用reverse()方法反向解析 ,reverse("app2_url_reverse") 对应urls的 name='app2_url_reverse'
    10. return render(request, "2/url_reverse.html")
    11. def test_get(request):
    12. print(request.get_host()) # 域名加端口
    13. print(request.build_absolute_uri()) # 获取完整的请求URI,包括查询字符串
    14. print(request.path) # 获取访问路径,不含参数
    15. print(request.get_full_path()) # 获取访问路径,不含参数
    16. print(request.method) # 获取请求中使用的HTTP方式(POST/GET)
    17. print(request.GET) # 获取GET请求的参数
    18. print(request.META["HTTP_USER_AGENT"]) # 用户浏览器的user-agent字符串
    19. print(request.META["REMOTE_ADDR"]) # 客户端IP地址
    20. print(request.GET.get('username')) # 获取get参数
    21. return HttpResponse("")
    22. # 获取请求中的使用HTTP方式(POST/GET)
    23. def test_post(request):
    24. print(request.method)
    25. print(request.POST.get('username'))
    26. return render(request, '2/test_post.html')
    27. def test_response(request):
    28. response = HttpResponse()
    29. response.write("

      hello django

      "
      )
    30. response.write("
      "
      )
    31. response.write(response.content)
    32. response.write("
      "
      )
    33. response.write(response['Content-Type'])
    34. response.write("
      "
      )
    35. response.write(response.status_code)
    36. response.write("
      "
      )
    37. response.write(response.charset)
    38. response.write("
      "
      )
    39. return response
    40. def test_render(request):
    41. return render(request, '2/test_render.html', {'info':'hello django'}, content_type='text/html; charset=utf-8')

    2.2  添加html代码

    1. "en">
    2. "UTF-8">
    3. Title
    4. 接收变量

    5. {{info}}
  • 2.3  添加路由地址

    1. from django.urls import path, re_path
    2. from . import views
    3. urlpatterns = [
    4. path('index', views.index, name='index'),
    5. path('url_reverse', views.url_reverse, name='app2_url_reverse'), # 使用reverse()方法反向解析 ,name对于视图的reverse("app2_url_reverse")
    6. path('test_get', views.test_get, name='test_get'),
    7. path('test_post', views.test_post, name='test_post'),
    8. path('test_response', views.test_response, name='test_response'),
    9. path('test_render', views.test_render, name='test_render'),
    10. ]

    2.4  访问页面

    http://127.0.0.1:8000/app2/test_render

  • 相关阅读:
    oracle 数据库 LISTAGG详解
    06-图2 Saving James Bond - Easy Version
    【MCAL_CANDriver】-1.4-Tq与Bit Rate,Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2之间的关系
    .NET MAUI开源免费的UI工具包 - Uranium
    I2C总线实现逻辑
    charles安装使用
    selenium加载插件自动化控制插件
    Unity vscode 官方debug
    Java学历、技术哪个更重要?学历不好还能进大厂吗?
    Python函数进阶
  • 原文地址:https://blog.csdn.net/qq_26086231/article/details/139483056