我目前正在开发一个 Pyramid 项目,但是我似乎无法从表单向应用程序提交 POST 数据。
我创建了一个基本表单,例如:
<form method="post" role="form" action="/account/register"> <div class="form-group"> <label for="email">Email address:</label> <input type="email" class="form-control" id="email" placeholder="you@domain.com"> <p class="help-block">Your email address will be used as your username</p> </div> <!-- Other items removed --> </form>
我定义了以下路由配置:
# projects __init__.py file config.add_route('account', '/account/{action}', request_method='GET') config.add_route('account_post', '/account/{action}', request_method='POST') # inside my views file @view_config(route_name='account', match_param="action=register", request_method='GET', renderer='templates/account/register.jinja2') def register(self): return {'project': 'Register'} @view_config(route_name='account_post', match_param="action=register", request_method='POST', renderer='templates/account/register.jinja2') def register_POST(self): return {'project': 'Register_POST'}
现在,使用 PyCharm 中的调试器以及 Pyramid 中的调试按钮,我已确认查看表单的初始 GET
请求正在由 register 处理 方法,当我点击提交按钮时,POST
请求由 *register_POST* 方法处理。
但是,我的问题是从 *register_POST* 方法中进行调试时,self.request.POST
字典为空。另外,当我检查页面上的调试按钮时,POST 请求已注册在列表中,但 POST 数据为空。
我是否遗漏了什么,或者是否有其他方式访问 POST 数据?
干杯, 贾斯汀
最佳答案
我已经成功让它工作了。愚蠢的我,来自 ASP.NET 背景,忘记了 POST 表单提交的基础知识,那就是每个表单字段都需要一个 name== 属性。一旦我把它们放进去,一切就开始工作了。
关于python - Pyramid self.request.POST 为空 - 没有可用的发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243208/