Django接收并解析postget请求参数

Django接收并解析postget请求参数,第1张

背景:Django开发api接口,接收前端传来的参数值并解析

POST请求

前端传输JSON格式,'Content-Type', 'application/json'

后端接收解析

GET请求

前端传输JSON格式,'Content-Type', 'application/json'

后端接收解析

用内置函数: __file__

给一个Django的示例,这是获取当前文件上一级目录的实例。

import os

# Build paths inside the project like this: ospathjoin(BASE_DIR, )

BASE_DIR = ospathdirname(ospathdirname(ospathabspath(__file__)))

name参数可以给一个匹配的url地址取名字,一般用于模板,也可以使用reverse进行页面重定向。

1、为APP中的books里面的urlspy(给url取个名字)

2、为APP中books里面的viewspy(redirect是重定向,reverse是将url的name解析成url本身的函数)

1、 name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

2、注意事项:

1、模板放在哪

2、在项目主目录settingpy中进行模板路径配置; 将我们的设置好的存放html模板的templates目录路径添加到DIRS中。

注意:reverse方法里面也可以有kwargs参数,直接将参数传给被reverse解析后要跳转的url路径中的捕获参数,来达到传参的效果。

原来是contentType为application/json时,Django不支持requestPOSTget(),但可以通过requestbody来获取string类型的参数:

注意:这里的jsonloads(requestbody)可能会因为python版本的原因会报错,详细看 >

先把前置条件说一下

1首先搭建好django环境 win+r 打开命令提示符 pip install django

3然后创建一个自己的app

同样在命令提示符 进入刚创建的工程所在路径 输入 python managepy startapp xxx(这个指你要创建的app名字),创新编辑器可以看到

4正式开始开发一个post请求

首先设置好参数 在seetingspy文件里如图修改

viewspy

最后在templates文件夹下创建一个html文件简单地写一下前端

我这里直接贴自己写的 loginhtml

code部分算是完成 看一下效果

还可以进入fiddler查看验证,为了比较好查到 我们先打开fiddler后输入用户名 密码后fiddler上 remove all session

可以得到这么一条数据包

username,password的值也和我们输入的一致

到此完成一个简单的post请求开发

使用 django 22。

一般来说,使用指令 npm run build 得到打包的 dist 包,交给 nginx 做路由转换(配置 location /static )即可,需要的只是在django配置可访问的 indexhtml 路径。

但是由于需要(?), 我想在本地进行测试,也就是说在没有 nginx, 开启 debug = True 的环境下调试。于是打开 python managepy runserver , 结果进入首页没有出现欢迎页面,打开 dev tools ,显示是这个样子的:

解决方法:将 vue 工程文件夹在 INSTALLED_APPS 里面注册下就行。

如果不注册 app, 那么即使写入文件夹, django 也不会扫描(根目录除外):

如上所示我在 STATICFILES_DIR 中已经写入了 blogfro (也就是 vue 文件目录) 打包完成后的 static 文件夹,但是进入首页仍然白屏。

白屏表示模板 TEMPLATES 的路径正常,但是静态文件仍然加载不出来。这就需要注册 app 。注册后就能够扫描到静态文件。

注册后就成功显示了首页:

在没有加载 app时,发现把 css 与 js 文件放在一个已经注册 app(backend)的静态文件夹中,能够正常显示。这验证了静态文件夹的扫描需要注册 app。

以我的项目为例:

在 debug 模式下,只需要 STATIC_URL 与 STATICFILES_DIR 即可。

根据 django 文档 说法, STATIC_URL 是路径的映射。服务器会将匹配到它的路径视为静态文件请求,然后进入 STATICFILES_DIR 指定目录下查找,并总是尝试返回匹配到的第一个结果。

在生产模式下(关闭 debug ),对静态文件的引用会失效。换句话说,出于性能考虑,我们不使用django服务器进行静态资源请求。我们常使用其他反代服务器进行发送。

出于这个考虑,django 使用了 collectstatic 指令,能将所有 STATICFILES_DIR 下的文件打包到 STATIC_ROOT 下。之后只要配置反代服务器应用这个静态文件夹就行了。

之后就能直接对 blogfro 进行开发了,开发完成后使用 npm run build , 然后直接开启 django 服务器就能进行测试。最后打包上线的时候将dist下的内容复制到到 STATIC_ROOT 下,然后 python managepy collectstatic (主要是收集 admin )的资源。

其实问题不是完全解决,但这是因为 vue + django 造成的。

django 使用自己的静态路径索引,必然有可能与vue发生冲突,为了处理必须进行调试。

使用 django 与 vue, 意味着希望进行前后端分离,所以开发过程本身就是隔离的。双方的交集应该是最后部署的时候(vue 打包, django 开启生产模式, 反代服务器开启(如 nginx))。这时候静态文件夹归反代服务器管理,不会出现这样的问题。

由于我只有一个人(太惨了),所以产生了同时调试 vue 与 django 的需求,这才导致了上面问题的产生。

本小节大概要花费10分钟。

在前面,我们已经学会了Django如何获得>

以上就是关于Django接收并解析post/get请求参数全部的内容,包括:Django接收并解析post/get请求参数、在python中,如何获取脚本文件所在路径、Django框架中path及re_path中name参数的使用和模板渲染(八)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9515353.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存