代码之家  ›  专栏  ›  技术社区  ›  Juzzbott

Pyramid self.request.POST为空-没有可用的后期数据

  •  1
  • Juzzbott  · 技术社区  · 12 年前

    我目前正在做一个金字塔项目,但我似乎无法从表单向应用程序提交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 回复  |  直到 12 年前
        1
  •  2
  •   Juzzbott    12 年前

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

        2
  •  1
  •   solusipse    12 年前

    我相信这没什么用。

    return {'project': 'Register_POST'}
    

    POST参数存储在请求中,所以您必须执行类似的操作。

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

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

    request.POST.get('email')
    
        3
  •  0
  •   Anvesh    12 年前
       <form method="post" role="form" action="/account/register"> {% csrf_token %}
    

    尝试使用“csrf令牌”。希望它起作用。剩下的代码看起来不错。

    推荐文章