Django 三板斧、静态文件、request方法

【一】三板斧

【1】HttpResponse

(1)介绍

  • HttpResponse是Django中的一个类,用于构建HTTP响应对象。
  • 它允许创建并返回包含特定内容的HTTP响应。

(2)使用

  1. 导入HttpResponse

    from django.http import HttpResponse
    
  2. 创建HttpResponse对象

    response = HttpResponse(content, content_type)
    
    • content参数是响应的内容,可以是字符串、HTML代码、JSON数据等。
    • content_type参数是响应的内容类型,通常根据返回的内容来设置适当的MIME类型。如果不提供该参数,Django会根据内容自动推断类型。
  3. 返回HttpResponse对象:将创建的HttpResponse对象返回给客户端。

    return response
    
  • HttpResponse对象可以通过修改其属性来设置响应的状态码、头部信息等。
    • 例如,可以使用status_code属性设置状态码,使用['Header-Name']语法设置头部信息。
response.status_code = 200
response['Content-Language'] = 'en'

【2】render

(1)介绍

  • render是Django中的一个函数,用于渲染模板并返回渲染后的HTTP响应对象。
  • render函数会根据传递的模板和数据,渲染模板并生成最终的HTML内容,然后将其封装在HttpResponse对象中返回给客户端。

(2)使用

  1. 导入render函数

    from django.shortcuts import render
    
  2. 调用render函数:使用render函数来渲染模板并返回HTTP响应对象。

    return render(request, template_name, context)
    
    • request参数是当前的请求对象。
    • template_name参数是要渲染的模板文件的名称。
    • context参数是一个字典,包含要传递给模板的数据。

【3】redirect

(1)介绍

  • redirect是Django中的一个函数,用于进行重定向操作,将用户重定向到指定的URL。
  • redirect函数会生成一个HTTP响应对象,将用户重定向到指定的URL。客户端会收到一个包含重定向URL的HTTP响应,然后会自动向该URL发出新的请求。

(2)使用

  1. 导入redirect函数

    from django.shortcuts import redirect
    
  2. 调用redirect函数:使用redirect函数来进行重定向操作。

    return redirect(to)
    
    • to参数是要重定向的目标URL。

【二】静态文件

【1】说明

(1)templates

  • 我们将html文件默认都放在templates文件夹下

  • html文件专业名词称之为’模板文件’

  • templates文件夹专业名词称之为’模板层’

(2)static

  • 这个文件夹可能需要手动创建(大家统一都起这个名)

  • 专门存储静态文件资源

  • 在浏览器中输入url能够看到对应的资源

  • 如果访问不到资源,说明后端没有开设相关资源的端口

  • static文件夹继续划分:

    • js文件夹
    • css文件夹
    • img文件夹
    • plugins文件夹

【2】静态文件配置

(1)settings文件

STATIC_URL = '/static/'STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')
]
  • STATIC_URL = '/static/'是Django中用于指定静态文件的URL前缀的设置。
    • 它告诉Django在生成静态文件的URL时使用/static/作为前缀。
    • 类似于访问静态文件的令牌
  • STATICFILES_DIRS是一个列表,用于指定额外的静态文件目录。
    • 在这个列表中,可以添加包含静态文件的文件夹路径。

(2)html文件

  • 先将jquery和bootstrap相关文件添加到static文件中

请添加图片描述

  • 前端代码配置模板示例
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width,initial-scale=1.0">{% load static %}<script src="{% static 'js/jquery-3.5.1.min.js' %}"></script><link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}"><script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script></head>
<body></body>
</html>

【三】requests方法

【0】准备基础

(1)settings

  • 完成静态文件配置
  • 再注释掉一行代码
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]

(2)后端准备

  • 创建应用app01

    • python .\manage.py startapp app01
      
  • 注册app

  • 创建登录方法

    • app01 --> views

    • from django.shortcuts import render# Create your views here.
      def login(request):if request.method == "POST":print("这是POST请求")data = request.POSTelif request.method == "GET":print("这是GET请求")data = request.GETprint("通过get获取值(一个值)".center(20, "="))name = data.get("username")print(f"name值:{name} 类型:{type(name)}")print("通过getlist获取值(一个值)".center(20, "="))pwd = data.getlist("password")print(f"password值:{pwd} 类型:{type(pwd)}")print("通过get获取值(多值)".center(20, "="))hobby = data.get("hobby")print(f"name值:{hobby} 类型:{type(hobby)}")print("通过getlist获取值(一个值)".center(20, "="))hobby = data.getlist("hobby")print(f"name值:{hobby} 类型:{type(hobby)}")return render(request, 'login.html')
  • 创建路由规则

    • urls

    • import app01.viewsurlpatterns = [path('admin/', admin.site.urls),path('login/', app01.views.login),
      ]
      

(3)前端准备

  • 创建login.html

    • templates --> login.html

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width,initial-scale=1.0">{% load static %}<script src="{% static 'js/jquery-3.5.1.min.js' %}"></script><link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}"><script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script></head>
      <body>
      <h1 class="text-center">登录界面</h1>
      <div class="container"><div class="row"><div class="col-md-6 col-md-offset-3"><form action="" method="get"><p>username: <input type="text" name="username" class="form-control"></p><p>password: <input type="password" name="password" class="form-control"></p><div class="col"><div class="col-md-3 success">兴趣爱好:</div><div class="col-md-3 success"><input type="checkbox" name="hobby" class="checkbox-row" value="c"></div><div class="col-md-3 success"><input type="checkbox" name="hobby" class="checkbox-row" value="t"></div><div class="col-md-3 success"><input type="checkbox" name="hobby" class="checkbox-row" value="l">篮球</div></div><input type="submit" class="btn btn-success btn-block"></form></div></div>
      </div>
      </body>
      </html>
      

【1】request属性和方法

(1)request.method

  • 表示HTTP请求的方法(GET、POST、PUT、DELETE等)。
  • 可以使用它来判断请求的类型
  • 注意是大写
if request.method == 'GET':# 处理GET请求
elif request.method == 'POST':# 处理POST请求

(2)request.POST

  • 这是一个包含通过POST方法提交的数据的字典。你可以使用它来访问表单数据或其他通过POST方法传递的数据。
  • 例如,有一个表单字段名为username,你可以通过request.POST['username']来获取它的值。
username = request.POST.get('username')

(3)request.GET

  • 这是一个包含通过GET方法提交的数据的字典。
  • 可以使用它来访问URL查询参数中的数据。
  • request.POST类似,可以通过request.GET.get('key')来获取字段的值。

(4)request.get()和request.getlist()

  • 这两个方法都用于获取请求参数的值。
  • request.get('key')
    • 只会获取列表最后一个元素
  • request.getlist('key')
    • 直接将列表取出(多选项)
value = request.POST.get('key')
values = request.GET.getlist('key')

【3】示例

(1)POST

  • 当表单为

    • <form action="" method="post">
      
这是POST请求
===通过get获取值(一个值)====
name值:bruce 类型:<class 'str'>
=通过getlist获取值(一个值)==
password值:['123456'] 类型:<class 'list'>
====通过get获取值(多值)====
name值:l 类型:<class 'str'>
=通过getlist获取值(一个值)==
name值:['c', 't', 'l'] 类型:<class 'list'>

(2)GET

  • 当表单为

    • <form action="" method="get">
      
这是GET请求
===通过get获取值(一个值)====
name值:bruce 类型:<class 'str'>
=通过getlist获取值(一个值)==
password值:['123456'] 类型:<class 'list'>
====通过get获取值(多值)====
name值:l 类型:<class 'str'>
=通过getlist获取值(一个值)==
name值:['c', 't', 'l'] 类型:<class 'list'>

(3)小结

  • request.method:表示HTTP请求的方法,用于判断请求的类型。
  • request.POST:包含通过POST方法提交的数据的字典,用于访问表单数据或其他通过POST方法传递的数据。
  • request.GET:包含通过GET方法提交的数据的字典,用于访问URL查询参数中的数据。
  • request.get():获取请求参数的值,只返回列表中的最后一个元素。
  • request.getlist():获取请求参数的值的列表,适用于多选项的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/564623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:Prometheus的源码包安装及操作(2)

环境介绍 三台centos 7系统&#xff0c;运行内存都2G 1.prometheus监控服务器&#xff1a;192.168.6.1 主机名&#xff1a;pm 2.grafana展示服务器:192.168.6.2 主机名&#xff1a;gr 3.被监控服务器&#xff1a;192.168.6.3 …

二叉树的遍历及线索二叉树试题解析

一、单项选择题 01.在下列关于二叉树遍历的说法中&#xff0c;正确的是( C ). A.若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点&#xff0c;则它一定是该子树的前序遍历结果序列的最后一个结点 B.若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一…

多态的左膀右臂,向上转型与重写

同一个引用 调用了 同一个方法&#xff0c;但是因为引用的对象不一样&#xff0c;所表现的行为不一样&#xff0c;我们把这种思想称为&#xff1a;多态 目录 1.向上转型 1.1.向上转型定义 1.2.向上转型的优缺点 1.3.向上转型的内存指向 1.4.向上转型的三种方式 1.5.向下…

【学习】软件测试行业未来的发展趋势预测

近年来&#xff0c;随着中国数字经济的蓬勃发展&#xff0c;软件测试行业也迎来了新的春天。从早期的手工测试到自动化测试&#xff0c;再到持续集成和持续交付&#xff0c;中国的软件测试行业经历了快速的发展和变革。各行各业均对软件测试提出了更高的要求&#xff0c;尤其在…

项目1-加法计算器

1.创建项目 2.导入前端代码 2.1 static包内 2.2 测试前端代码是否有误 显示成功说明无误 2.3 定义用户接口 请求路径&#xff1a;calc/sum 请求方式&#xff1a;GET/POST 接口描述&#xff1a;计算两个整数相加 请求参数: 参数名类型是否必须备注num1Integer是参与计算的第…

python学习9:python的代码中的数据类型转换

python中数据类型的转换 1.为什么需要转换类型呢&#xff1f; 数据类型之间&#xff0c;在特定的场景下&#xff0c;是可以相互转换的&#xff0c;如字符串转数字&#xff0c;数字转字符串等&#xff1b;数据类型转换&#xff0c;在以后是我们经常使用到的功能&#xff0c;例如…

【MySQL】复合查询——基本单表查询、多表查询、自连接、子查询、使用from进行子查询、合并查询

文章目录 MySQL复合查询1. 基本单表查询2. 多表查询3. 自连接4. 子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 使用from进行子查询 5. 合并查询5.1 union5.2 union all MySQL 复合查询 数据库的复合查询是指在一个查询中结合使用多个查询条件或查询子句&#xff0c;以…

前端学习之用css和html做一个仿淘宝的导航栏

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>仿淘宝界面案例</title><style>/* 最外层盒子 */.container{width: 270px;height: 385px;border: 1px solid rgb(255, 208, 0);bord…

MISC:zip压缩包伪加密破解及其结构解析

一.前言 遇到zip压缩包是被加密的&#xff0c;但加密有时侯是伪加密&#xff0c;需要我们进行破解。 二.压缩包解析 1. 压缩源文件数据区 zip文件头标记 文件头&#xff1a;504B0304 解压文件所需的pkware版本 全局方式位标记 如果四位中的第二位为奇数则表示有加密&#xff…

基于LLM的数据质量错误检测

原文地址&#xff1a;automated-detection-of-data-quality-issues 2024 年 3 月 23 日 本文是有关使用大型语言模型 (LLM) 清理数据的系列文章中的第二篇文章&#xff0c;重点是识别表格数据集中的错误。 该图概述了我们将在本文中探讨的方法&#xff0c;该方法侧重于在最少的…

检索增强生成(RAG)技术:实现流程、作用及应用案例

一. RAG简介 在自然语言处理&#xff08;NLP&#xff09;领域中&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;技术巧妙地结合了信息检索与神经网络生成模型的力量&#xff0c;通过在生成过程中引入相关的外部信息&#xff0c;实现了在…

红外遥控器的使用和详细解释

infrared.c #include "infrared.h"/* 红外 --- PA8*/void Infrared_Init(void) {GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;//使能SYSCFG时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, E…