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.mzph.cn/news/768343.shtml

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

相关文章

八股文(1)

管道 匿名管道和命名管道 命名管道的使用是什么&#xff1f;在linux系统如何实现 命名管道&#xff08;Named Pipe&#xff09;&#xff0c;也称为FIFO&#xff08;First In First Out&#xff09;&#xff0c;是一种在UNIX和Linux系统中用于进程间通信&#xff08;IPC&…

springboot实现简单的excel导入

前文其实已经实现了较为复杂的excel导入了&#xff0c;这篇博客就给大家介绍简单的excel表格导入方法 以下是我的excel表格&#xff1a; 以下是我的实体类&#xff1a; package com.datapojo.bean;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.m…

直接插入排序 希尔排序 选择排序 堆排序

目录 一. 排序的概念及应用 1.1 排序的概念 1.2 常见的排序算法 二. 常见排序算法的实现(从小到大排序) 2.1 插入排序 2.1.1基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希尔排序( 缩小增量排序) 2.2 选择排序 2.2.1基本思想&#xff1a; 2.2.2 直接选择排序: 2…

动态规划——线性dp

数字三角形 // 从上到下 #include <iostream> #include <algorithm> using namespace std; const int N 510, INF 1e9; int n; int a[N][N]; int f[N][N];int main() {scanf("%d", &n);for (int i 1; i < n; i )for (int j 1; j < i; j …

计算机组成原理 CPU组成与机器指令执行实验

一、实验目的 (1)将微程序控制器同执行部件( 整个数据通路)联机&#xff0c;组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序&#xff0c;掌握机器指令与微指令的关系&#xff0c;牢固建立计算机的整机概…

深度学习pytorch——2D函数优化实例(持续更新)

课程&#xff1a;课时46 优化问题实战_哔哩哔哩_bilibili 这就是我们今天要求的2D函数&#xff1a; 下图是使用python绘制出来的图像&#xff1a; 但是可以看出有4个最小值&#xff0c;但是还是不够直观&#xff0c;还是看课程里面给的比较好&#xff0c;蓝色是最低点位置&am…

Python 全栈系列236 rabbit_agent搭建

说明 通过rabbit_agent, 以接口方式实现对队列的标准操作&#xff0c;将pika包在微服务内&#xff0c;而不必在太多地方重复的去写。至少在服务端发布消息时&#xff0c;不必再去考虑这些问题。 在分布式任务的情况下&#xff0c;客户端本身会启动一个持续监听队列的客户端服…

Django(一)- 环境搭建和快速入门

一、搭建环境 1、创建Python虚拟环境 (base) C:\Users\35351>conda create -n django_study python3.9 2、安装Django (django_study) C:\Users\35351>pip install Django >> 查看安装版本 (django_study) C:\Users\35351>python -m django --version 3、安…

数据分析与挖掘

数据起源&#xff1a; 规模庞大&#xff0c;结构复杂&#xff0c;难以通过现有商业工具和技术在可容忍的时间内获取、管理和处理的数据集。具有5V特性&#xff1a;数量&#xff08;Volume&#xff09;&#xff1a;数据量大、多样性&#xff08;Variety&#xff09;&#xff1a…

CSS(二)

一、CSS 的复合选择器 1.1 什么是复合选择器 在 CSS 中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形成的。 复合选择器可以更准确、更高效的选择目标元素&#xff…

OC对象 - 关联对象(如何给分类添加成员变量)

文章目录 OC对象 - 关联对象&#xff08;如何给分类添加成员变量&#xff09;1. 基本使用1.1 提供的API1.1.1 添加关联对象1.1.2 获得关联对象1.1.3 移除所有关联对象1.1.3 修饰符 1.2 使用方法1.2 Key的常见用法1.2.1 使用的get方法的selecor作为key1.2.2 使用指针的地址作为k…

LeetCode每日一题——移除链表元素

移除链表元素OJ链接&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这与之前的移除元素的题目很相似&#xff0c;那么我们同样可以用类似的做法&#xff08;双指针&#xff09;进行解题。但是这是一个链表删除&a…

树状数组原理和代码

树状数组 求下标的对应 求i管着的下标的范围 方法&#xff1a;拆掉最右侧的1然后1 到你自己 query sum 1-i的和 拆掉最右侧的1 再把下一个数值吸收到sum 重复这个过程直到全变0为止 add 方法&#xff1a;加上最右侧的1 到上限为止 lowbit方法 单点增加范围查询模板 #inc…

no main manifest attribute, in xxx.jar

找不到主类&#xff0c;如果是maven 项目&#xff0c;在pom.xml 指定主类 <mainClass>com.example.demo.Demo2Application</mainClass>还是不行的话&#xff0c;把 <skip>true</skip>去掉

nodejs+vue高校师资管理系统python-flask-django-php

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…

从FasterTransformer源码解读开始了解大模型(1.0)了解FasterTransformer

从FasterTransformer源码解读开始了解大模型&#xff08;1.0&#xff09;了解FasterTransformer 写在前面的话 最近的一年时间真是令人感慨&#xff0c;换了个工作方向&#xff0c;学了些深度算子开发相关知识&#xff0c;工作也转到对LLM的学习和开发了。入行不算深&#xf…

谷粒商城——缓存的概念

1. 使用缓存的好处&#xff1a;减少数据库的访问频率&#xff0c;提高用户获取数据的速度。 2. 什么样的数据适合存储到缓存中&#xff1f; ①及时性、数据一致性要求不高的数据&#xff0c;例如物流信息、商品类目信息 ②访问量大更新频率不高的数据(读多、写少) 3. 读模式…

加密技术概述

传输数据时的四个问题 窃听 数字加密 假冒 消息认证或数字签名 篡改 消息认证码或数字签名 事后否认 数字签名 加密技术 将数据变成第三者的计算机无法理解的形式&#xff0c;然后再将其恢复成原本数据的一系列操作就是加密技术。 哈希函数 哈希函数可以把给定的数据转…

设计模式之状态模式(一)

设计模式专栏&#xff1a; http://t.csdnimg.cn/4Mt4u 目录 1.概述 2.结构 3.实现 4.总结 1.概述 状态模式( State Pattern)也称为状态机模式( State Machine pattern), 是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类, 属于行为型模式。 在状…

Vue3+echarts绘制世界地图

先放效果图 之前所查找的资料都没有讲清楚如何引入地图文件并绘制地图&#xff0c;下面做一个记录。 首先下载对应的地图json文件&#xff0c;这里可以参考我的这篇文章&#xff0c;提供了下载地址&#xff1a;记录echarts各种地图json文件下载地址-CSDN博客 第二步&#xff…