TEL:400-8793-956
当前位置:程序、服务器

从python生成表单数据

提问者: 近期获赞: 浏览人数: 发布时间:2021-02-20 10:30:30

 问:我想了解html表单是如何构造要发送到我的Flask服务器的数据的,所以我尝试直接从python发送表单数据。但是,我无法复制html表单在做什么。有人知道我在做什么错吗?

 
首先,我将这一行添加到“保存”功能中:
 
打印 “请求表:{}” 。格式(请求。形式)
从索引网站提交名称时,该行将显示以下内容:
 
Request form: ImmutableMultiDict([('name', u'Name-from-website-form')])
 
然后我运行了这个非常小的python程序:
 
--------------------------------- 
import  json 
import  urllib2 
url = “ http://0.0.0.0:8000/保存”
数据 =  {  '名称' : '来自Python的名称'  } 
req  =  urllib2 。请求(url )
urllib2 。urlopen (req , json 。转储(数据))。阅读()
---------------------------------
运行此命令时,我的flask服务器的打印行显示如下:
 
Request form: ImmutableMultiDict([('{"name": "name-from-python"}', u'')])
 
如果不清楚,该词典是从'{“ name”:“ name-from-python”}'到空字符串的映射-显然不是我想要的。
 
我究竟做错了什么?
 
[MOD:添加了```python formatting -cf]
 
 
答:首先,您正在使用Python 2吗?所述的urllib2模块被在Python 3替换为urllib.request和urllib.error。
 
使用Python2可以正常工作(我修改为使用端口8080并路由到formdata进行设置):
 
#将数据发布到烧瓶服务器上
导入 urllib
导入 urllib2 
url = “ http://0.0.0.0:8080/formdata” 
data  =  urllib 。urlencode ({ 'name'  : 'name-from-python' })
content  =  urllib2 。urlopen (url = url , data =数据)。阅读()
您可以选择添加 print(content)
 
formdata 路线:
 
#加到app.py:
从 烧瓶 进口 请求
@ app.route ('/ FORMDATA' ,方法= ('GET' ,'POST' ))DEF FORMDATA ():尝试:打印(请求。形式),除了:打印(“ formdata:无格式” )返回重定向(url_for ('index' ))
运行python app.py在一个窗口中并运行“后数据到烧瓶服务器”上方在另一个窗口Python 2中的外壳,产生从烧瓶中应用以下代码:
 
ImmutableMultiDict([( '姓名', '名称从-蟒')])
 127.0.0.1 - - [17月/ 10月/ 2015年23时27分42秒] “POST / FORMDATA HTTP / 1.1” 302 -
 127.0.0.1 - - [17 / Oct / 2015 23:27:42]“ GET / HTTP / 1.1” 200-
如果您需要更多的自省,则可以在路由中添加print(dir(request))或print(dir(request.form)),save以深入了解已发布的请求内容。
上一篇: 我无法理解do while循环
下一篇: 如何使用字符串格式用firstName变量替换