金字塔self.request.POST为空
我目前正在研究一个金字塔项目,但是我似乎无法将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中的调试器以及金字塔中的调试按钮,我已经确认了用于查看表单的初始GET
请求正在由注册方法处理,并且当我点击提交按钮时, POST
请求被处理* register_POST *方法。
但是,我的问题是从* register_POST *方法中调试, self.request.POST
字典是空的。 此外,当我检查页面上的调试按钮时,POST请求已在列表中注册,但POST数据为空。
我是否缺少某些东西,还是有其他方式访问POST数据?
干杯,贾斯汀
这没什么,我相信。
return {'project': 'Register_POST'}
POST参数存储在请求中,所以你必须做这样的事情。
def register_POST(self, request):
return {'project': request.POST}
要访问电子邮件输入(必须命名,例如: name="email"
),请使用get()
方法:
request.POST.get('email')
我设法让它工作。 愚蠢的我,来自ASP.NET背景忘了POST表单提交的基础知识,这是每个表单字段需要一个名称==属性。 只要我把它们放入,一切都开始工作。
<form method="post" role="form" action="/account/register"> {% csrf_token %}
尝试使用“csrf令牌”。 希望它有效。 其余代码看起来不错。
链接地址: http://www.djcxy.com/p/71949.html