金字塔self.request.POST为空 - 没有可用的帖子数据

时间:2014-03-07 06:32:27

标签: python forms http-post 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中的调试器以及金字塔中的调试按钮,我已确认寄存器方法正在处理查看表单的初始GET请求,当我点击提交按钮时,POST请求由* register_POST *方法处理。

但是,我的问题是从* register_POST *方法调试,self.request.POST dict是空的。此外,当我检查页面上的调试按钮时,POST请求已在列表中注册,但POST数据为空。

我是否遗漏了某些内容,或者是否有其他方式访问POST数据?

干杯, 贾斯汀

3 个答案:

答案 0 :(得分:2)

我设法让它运转起来。来自ASP.NET背景的傻我忘记了POST表单提交的基础知识,而且每个表单字段都需要一个name ==属性。我把它们放进去后,一切都开始工作了。

答案 1 :(得分:1)

我什么都不做,我相信。

return {'project': 'Register_POST'}

POST参数存储在请求中,因此您必须执行以下操作。

def register_POST(self, request):
     return {'project': request.POST}

要访问电子邮件输入(必须命名,例如:name="email"),请使用get()方法:

request.POST.get('email')

答案 2 :(得分:0)

   <form method="post" role="form" action="/account/register"> {% csrf_token %}

尝试使用“csrf令牌”。希望它有效。剩下的代码看起来很好。