在 data.put() 我需要向用户显示数据已成功提交或失败,以防 pof one

on data.put() i need to display to the user that the data has been successfully submitted or failure incase pof one

我主要在 jinja2 模板上使用 python 和 google 应用引擎 我希望当用户注册一个新帐户时,他们会收到一个弹出窗口,表明他们的注册成功,甚至在进入下一个注册步骤之前界面上的任何警报。

def post(self):

            user = (str(users.get_current_user().email()))
            userquery = Users.query(Users.email == user)
            count = userquery.count()
            if count == 0:
                #test if user is admin or employee
                qry = Users.query()
                count = qry.count()
                if count == 0:
                    privilage = 'admin'
                    db_put = Users(
                    f_name=self.request.get("f_name"),
                    l_name = self.request.get("l_name"),
                    org = self.request.get("org"),
                    email=users.get_current_user().email(),
                    privilage = privilage
                                           )
                    db_put.put()

如何调用此 POST 方法?您是直接向那里发送表单(使用方法 1)还是通过 AJAX 调用(使用方法 2)完成?

方法一

您可以重定向到 GET 页面,在该页面中呈现包含成功或错误消息的模板供 Jinja 使用。但是,这将涉及页面更改。

import webapp2

class MyHandler(webapp2.RequestHandler):

  def get(self):  # Let's assume /someurl is mapped to this handler.
    template_values = {}
    notification = self.request.get('notification')
    if notification:
      template_values['notification'] = notification
    self.response.set_status(200)
    self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
    # Need to get the template from jinja and set it as template variable.
    self.response.out.write(template.render(template_values))

  def post(self):
    # Do all your stuff here.
    self.redirect('/someurl?notification=Success')

或者,您可以直接在请求中设置参数,而不是将它们作为 URI 参数传递:

  def post(self):
    # Do all your stuff here.
    self.redirect('/someurl, params={'notification': 'Success'})

方法二

在此方法中,您可以发回 JSON 响应,其中包含成功或错误消息。调用者(您 javascript 中向后端提交请求的任何函数)都可以使用它来呈现 butterbar 消息或您选择的其他弹出通知:

import json
import webapp2

class MyHandler(webapp2.RequestHandler):

  def post(self):
    # Do all your stuff here.
    self.response.set_status(200)
    self.response.headers['Content-Type'] = 'application/json; charset=utf-8'
    self.response.headers['Content-Disposition'] = 'attachment'
    self.response.out.write(json.JsonEncoder(sort_keys=True).encode('Success'))

对于后者,请务必考虑跨站点脚本 (XSS) 漏洞并可能添加 JSON 前缀。