Python3+Django get/post请求实现教程详解
一、说明
之前写了一篇“Python3+PyCharm+Django+Django REST framework开发教程 ”,想着直接介绍rest就完了。但回过头来看,一是rest在解耦的同时将框架复杂化了如果没有多终端那rest根本没有降低复杂度反而增加了复杂度,二是基础的get和post实现自己还是看半天。所以还是有必要再写一篇来介绍django常规的MVC开发。
环境搭建程项目创建都类似的的rest化部分之前(2.5及之前)进行操作即可,就不重复说明了。这里我创建的项目为django1,初始目录结构如下
二、环境配置
如果自己创建的项目不叫django1,则以下所有django1修改为自己的项目名。
2.1 自定义模版路径及创建模版
编缉django1/django1/setting.py,定位到TEMPLATES变量,将DIRS的值修改为BASE_DIR+"/django1/templates",
在django1/django1目录下创建templates文件夹,并在其下创建get.html、post.html、result.html三个文件。
get.html,用于get提交:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>get请求示例</title> </head> <body> <form action="/get" method="get"> <input type="text" name="q" /> <input type="submit" value="搜索" /> </form> </body> </html>
post.html,用于post提交。{%%}表示其内是Django模板语句,{% csrf_token %}指示此表单加载时返回token在其提交时进行token认证(如果要关闭服务端该csrf附御功能将setting.py----MIDDLEWARE----'django.middleware.csrf.CsrfViewMiddleware'注释掉):
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>post请求示例</title> </head> <body> <form action="/post" method="post"> {% csrf_token %} <input type="text" name="q" /> <input type="submit" value="搜索" /> </form> </body> </html>
result.html,用于显示get和post输入的内容。{{}}表示其内是Django模板变量:
<h1>{{ result }}</h1>
2.2 配置请求路由
Django所有请求路由都由urls.py设置,即便是存在的静态文件(如html)也要配置路由才能访问。
编缉django1/django1/urls.py,修改为以下内容:
from django.contrib import admin from django.urls import path from django.conf.urls import url from . import view urlpatterns = [ path('admin/', admin.site.urls), # url(r'^hello$', view.hello), url(r'^get\.html$', view.get_html), url(r'^get$', view.get), url(r'^post\.html$', view.post_html), url(r'^post$', view.post), ]
2.3 实现处理逻辑
在2.2中我们配置了get.html、get、post.html、post四个请求分别转交到view.get_html、view.get、view.post_html、view.post进行处理。本节我们实现这四个处理逻辑。
在django1/django1文件夹下创建view.py,写入以下内容:
from django.shortcuts import render, render_to_response def get_html(request): return render_to_response('get.html') def get(request): context = {} # 通过request.GET['name']形式获取get表单内容 # result为重定向到的result.html所使用的变量 context['result'] = f"你搜索的内容为:{request.GET['q']}" return render(request, 'result.html', context) def post_html(request): # 不能和get一样使用render_to_response必须使用render进行重定向,不然服务端不会设置csrf_token # return render_to_response('post.html') return render(request, 'post.html') def post(request): context = {} # 通过request.GET['name']形式获取post表单内容 # result为重定向到的result.html所使用的变量 context['result'] = f"你搜索的内容为:{request.POST['q']}" return render(request, 'result.html', context)
其中注意如注释所强调,post_html中不能使用render_to_response必须使用render进行重定向,不然服务器不能成功返回token导致token验证失败进而导致不能访问页面(403,CSRF token missing or incorrect.)。如下图所示:
另外,如上所示返回了详细的错误信息,这在信息安全中是忌讳但这并不是django没考滤到,而是Django默认开启DEBUG模式,到settings.py中设置DEBUG = False,并设置ALLOWED_HOSTS即可(ALLOWED_HOSTS不是指允许访问服务的IP而是允许外部访问服务地址)。
三、运行效果
3.1 总体目录结构
经第二大节所有操作,项目目录结构如下图所示(.idea和__pycache__不用管):
3.2 运行效果
get请求页面:
get请求结果:
post请求页面:
post请求结果:
本文主要介绍了Django中get/post请求实现简单方法,想了解更多关于Django的使用教程请查看下面的相关链接
相关文章
- 这篇文章主要介绍了gin 获取post请求的json body操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-15
- 这篇文章主要介绍了Python3 实现将bytes图片转jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
C#使用Http Post方式传递Json数据字符串调用Web Service
这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25Python3中小括号()、中括号[]、花括号{}的区别详解
这篇文章主要介绍了Python3中小括号()、中括号[]、花括号{}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15- 本篇文章是对C#中的get与set进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 下面小编就为大家带来一篇C#模拟http 发送post或get请求的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
Django def clean()函数对表单中的数据进行验证操作
这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-09- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
- 这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
- 这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
- 这篇文章主要介绍了idea out目录与target目录的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-08
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 这篇文章主要介绍了C#使用post发送和接收数据的方法,涉及C#使用post收发数据的相关技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要给大家介绍了关于Angular利用HTTP POST下载流文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Angular具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-07-26
- 这篇文章主要介绍了解决IDEA target文件夹越来越大的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
- 这篇文章主要介绍了浅谈Python3中print函数的换行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-05
- 这篇文章主要介绍了PyQt5 实现给无边框widget窗口添加背景图片的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了python3 sqlite3限制条件查询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-07
- 这篇文章主要介绍了解决python3安装pandas出错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-05-20