django表单提交

前提:

使用django-admin startproject XXX创建了一个django项目【项目目录为project】

django-admin startproject project

一:控制器配置

在项目的根目录创建一个Controller目录,并在Controller目录下创建一个search.py

# -*- coding: utf-8 -*-
 
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.views.decorators import csrf
 
# 表单(用于渲染页面)
def index(request):
    return render_to_response('search/index.html')
 
# 接收GET请求数据
def get(request):
    request.encoding='utf-8'
    data = {}
    if ('keywords' in request.GET and request.GET['keywords']):
        data['keywords'] = '' + request.GET['keywords']
    else:
        data['keywords'] = '你提交了空表单'
    return render_to_response("search/index.html", data)

# @csrf.csrf_exempt  #当提交表单提示403时增加
def post(request):
    request.encoding='utf-8'
    data ={}

    if ('name' in request.POST and request.POST['name']):
        data['name'] = '' + request.POST['name']
    else:
        data['name'] = '你提交了空表单'
    return render_to_response("search/index.html", data)

二:视图渲染

在项目的根目录创建一个VIew目录,后续所有的视图文件都放在此目录下,并且需要修改配置文件project/settings.py文件中的视图目录地址

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/View",],  #配置视图文件根目录
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

根据上面的控制器我们在View目录下创建一个search目录并在search目录下创建一个index.html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Examples</title>
</head>
<body>
    <form action="/search/get/" method="get">
        <input type="text" name="keywords">
        <input type="submit" value="GET搜索">
    </form>
    <p>GET搜索的内容为:{{ keywords }}</p>


     <form action="/search/post/" method="post">
        {% csrf_token %}
        <input type="text" name="name">
        <input type="submit" value="POST搜索">
    </form>
   	<p>POST搜索的内容为:{{ name }}</p>
</body>
</html>

在post提交表单的 html中增加一个{% csrf_token %},此标签专门用于防止伪装提交请求的功能

三:路由配置

修改路由配置文件project/urls.py文件中的路由配置

from django.contrib import admin
from django.urls import path
from Controller import search

urlpatterns = [
    path('search/', search.index),
    path('search/get/', search.get),
    path('search/post/', search.post),
]

运行服务

python manage.py runserver 0.0.0.0:8000

访问127.0.0.1:8000/search效果如下

四:Request 对象

Request 对象常用属性

属性描述
path请求页面的全路径,不包括域名—例如, "/hello/"。
method请求中使用的HTTP方法的字符串表示。全大写表示,如GET,POST
GET包含所有HTTP GET参数的类字典对象
POST包含所有HTTP POST参数的类字典对象
REQUEST为了方便,该属性是POST和GET属性的集合体,但是有特殊性,先查找POST属性,然后再查找GET属性。借鉴PHP中 $_REQUEST。
COOKIES包含所有cookies的标准Python字典对象。Keys和values都是字符串。
FILES

包含所有上传文件的类字典对象。FILES中的每个Key都是<input type="file" name="" />标签中name属性的值. FILES中的每个value 同时也是一个标准Python字典对象,包含下面三个Keys:

  • filename: 上传文件名,用Python字符串表示

  • content-type: 上传文件的Content type

  • content: 上传文件的原始内容

注意:只有在请求方法是POST,并且请求页面中<form>有enctype="multipart/form-data"属性时FILES才拥有数据。否则,FILES 是一个空字典。

META

包含所有可用HTTP头部信息的字典。 例如:

  • CONTENT_LENGTH

  • CONTENT_TYPE

  • QUERY_STRING: 未解析的原始查询字符串

  • REMOTE_ADDR: 客户端IP地址

  • REMOTE_HOST: 客户端主机名

  • SERVER_NAME: 服务器主机名

  • SERVER_PORT: 服务器端口

META 中这些头加上前缀HTTP_最为Key, 例如:

  • HTTP_ACCEPT_ENCODING

  • HTTP_ACCEPT_LANGUAGE

  • HTTP_HOST: 客户发送的HTTP主机头信息

  • HTTP_REFERER: referring页

  • HTTP_USER_AGENT: 客户端的user-agent字符串

  • HTTP_X_BENDER: X-Bender头信息

user

是一个django.contrib.auth.models.User 对象,代表当前登录的用户。

如果访问用户当前没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。

你可以通过user的is_authenticated()方法来辨别用户是否登录:
if request.user.is_authenticated():
    # 用于已登录
只有激活Django中的AuthenticationMiddleware时该属性才可用

session唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬核程序员接单指南,速看!

程序员单没接着&#xff0c;时间还浪费了&#xff1f;惹得一身晦气。遇上了1k开发一个“淘宝”网站的“深井”&#xff1f;不是来下单的&#xff0c;倒像是来许愿的……估摸着是把程序员当阿拉丁神灯。 莫非那些兼职月入3k&#xff0b;的人&#xff0c;都是托儿&#xff1f;带着…

Mysql深入学习 基础篇 Ss.05多表查询语法及案例

世界总是在推着我走&#xff0c;我自己一个人也能站稳 —— 24.3.7 一、多表关系 1.概述 项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个…

1分钟带你搞定Python函数分类

python语言中&#xff0c;函数可以分为内置函数、自定义函数、有参数函数、无参数函数、有名字函数和匿名函数。其中&#xff0c;内置函数可以直接使用&#xff0c;自定义函数需要根据需求定义。有参数函数在定义时需要指定参数&#xff0c;调用时传入参数。无参数函数在定义时…

FPGA AXI4总线信号介绍篇

一.AXI总线类型接口 AXI是一种总线协议&#xff0c;可以挂在多个master和slave&#xff1a; &#xff08;1&#xff09;AXI4&#xff1a;主要面向高性能地址映射通信的需求&#xff1b;&#xff08;突发数据&#xff09;&#xff08;地址映射模式&#xff09; &#x…

软件设计师13--进程调度

软件设计师13--进程调度 考点1&#xff1a;PV操作的概念进程的同步与互斥PV操作例题&#xff1a; 考点2&#xff1a;信号量与PV操作进程管理 - PV操作与互斥模型进程管理 - PV操作与同步模型进程管理 - 互斥与同步模型结合例题&#xff1a; 考点3&#xff1a;前趋图与PV操作进程…

利用auto-py-to-exe库的简单图形界面实现.py到.exe的转换

文章目录 1. auto-py-to-exe 简介2. 安装与使用3. 配置项介绍4. 打包完成 1. auto-py-to-exe 简介 运行 .py 文件需要配套相应的 Python 解释器和相关的依赖项&#xff0c;而很多时候我们会面临光有待演示的 .py 程序&#xff0c;而没有支持演示的环境的尴尬。一种解决办法就是…

RestTemplate SSL证书信任忽略 + 线程池配置 + 线程池监控

RestTemplateConfig.java RestTemplate配置类 Slf4j Configuration public class RestTemplateConfig {/*** 初始化 RestTemplate 配置线程池和SSH证书信任*/Beanpublic RestTemplate restTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementExce…

掌握计算机自动化:Pyperclip与CnOCR详细教程(最全使用方法,每行代码都有注释,帮你解决与之有关的所有问题)

文章目录 一、Pyperclip概念二、Pyperclip基础语法三、Pyperclip与文件交互四、Pyperclip生成随机密码五、OCR概念六、CnOCR 基础识别七、CnOCR 不同图片识别 在这个信息化快速发展的时代&#xff0c;高效的信息处理变得尤为关键。Python&#xff0c;作为一门强大的编程语言&am…

【C语言】linux内核dev_queue_xmit

一、中文注释 这两个函数是Linux内核网络子系统中负责发起网络包&#xff08;sk_buff结构&#xff09;传输的代码。下面我将用中文对这两个函数做一个简单的注释&#xff1a; /*** __dev_queue_xmit - 发送一个buffer* skb: 要发送的buffer* sb_dev: 子设备&#xff0c;用于层…

2024年最新整理腾讯云学生服务器价格、续费和购买流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

Pytorch之神经网络最大池化层

池化层&#xff08;Pooling layer&#xff09;是深度学习神经网络中常用的一种层类型&#xff0c;它的作用是对输入数据进行降采样&#xff08;downsampling&#xff09;操作。池化层通过在输入数据的局部区域上进行聚合操作&#xff0c;将该区域的信息压缩成一个单一的值&…

面试题个人总结(面经)

自我介绍 你好&#xff0c;我叫XXX&#xff0c;是今天面试初级蓝队的人员&#xff0c;我毕业于XXXX&#xff0c;专业为网络空间安全,我曾经在XXXXX实习过&#xff0c;有过大概一年左右的工作经验&#xff0c;还有过一定的护网经验&#xff0c;去年在XXX厂商护过网&#xff0c;…

【计算机考研择校】四川大学vs电子科技大学哪个难度更大?

川大在文科&#xff0c;经管方面比科大强&#xff0c;医学在国内都很强。但工科方面特别是电子信息领域明显是科大强于川大。毕竟一个是综合大学&#xff0c;一个是工科大学不可同日而语。 就业上&#xff0c;电子科大在IT领域的社会声誉口碑不错。就业一向都很好。这个多问问…

Swin-UMamba—基于 Mamba 的 UNet 和基于 ImageNet 的预训练—论文精读和代码实践

Swin-UMamba 期刊分析摘要贡献方法Swin-UMamba整体框架1. 基于 Mamba 的 VSS 块2. 集成基于 ImageNet 的预训练3. Swin-UMamba解码器4. Swin-UMamba†&#xff1a;带有基于 Mamba 的解码器的 Swin-UMamba 实验代码实践 可借鉴参考 期刊分析 Swin-UMamba只是名字中含有swin&…

为什么不从独立服务器中转向云或其他方案呢?

传统的专用服务器&#xff0c;如香港服务器租赁、重庆服务器租赁等&#xff0c;是最强大、最稳定的业务托管类型之一。您将获得比任何其他托管计划更多的管理权限和卓越的性能&#xff0c;并且您可以控制整个服务器上的几乎所有内容。 当然&#xff0c;专用服务器也是在线业务…

HTML5:七天学会基础动画网页9

在进行接下来的了解之前我们先来看一下3d的xyz轴&#xff0c;下面图中中间的平面就相当于电脑屏幕&#xff0c;z轴上是一个近大远小的效果。 3d转换属性 transform 2D或3D转换 transform-origin 改变旋转点位置 transform-style 嵌套元素在3D空间如何显 …

Eclipse调试技巧 条件断点 监视

实验代码 import java.util.Scanner;public class Test {// 判断n是否为质数public static boolean isPrime(int n){if (n < 2)return false;for (int i 2; i < n; i){if (n % i 0)return false;}return true;}public static void main(String[] args){Scanner scanne…

类初步认识与对象

一&#xff0c;对于面向对象的认识 Java是一门面向对象的语言&#xff0c;一切都可以称为对象。将一个大象装进冰箱&#xff0c;甭管步骤多复杂&#xff0c;大象便是对象&#xff1b;将牛奶放进冰箱&#xff0c;牛奶便是对象&#xff1b;你我均是对像。 再比如洗一个衣服&…

JavaScript——流程控制(程序结构)

JavaScript——流程控制&#xff08;程序结构&#xff09; 流程控制就是来控制我们的代码按照什么结构顺序来执行。更倾向于一种思想结构。 流程控制分为三大结构&#xff1a;顺序结构、分支结构、循环结构 1、顺序结构 ​ 代码从上往下依次执行&#xff0c;从A到B执行&#x…

Java毕业设计 基于SpringBoot vue 疫苗咨询与预约系统

Java毕业设计 基于SpringBoot vue 疫苗咨询与预约系统 SpringBoot vue 疫苗咨询与预约系统 功能介绍 用户前端&#xff1a;首页 图片轮播 疫苗信息 条件查询 疫苗详情 点我收藏 评论 接种疫苗 疫情资讯 资讯详情 资讯评论 论坛交流 发布帖子 公告信息 公告详情 留言反馈 登录…