【问题标题】:How to call a view from another in Flask如何在 Flask 中调用另一个视图
【发布时间】:2019-05-15 23:22:48
【问题描述】:

所以SignUp 1函数连接到一个html文件,这部分没问题,用户可以提交表单。但是,一旦验证了此表单,我想调用 SignUp2() 函数,该函数应将另一个 html 文件与表单连接起来。但是,一旦用户提交表单(在 SignUp1 函数中),我会收到一个名为:werkzeug.routing.BuildError: Could not build url for endpoint 'SignUp2'.

请您告诉我如何从 SignUp 1 函数调用 SignUp2 函数。谢谢。

@app.route('/', methods=["GET", "POST"])
def SignUp1():
    form = UserForm()
    SchoolCode = None
    FirstName = None
    Postcode = None
    Phone = None
    ConfirmEmail = None
    Password = None
    AddLineOne = None
    AddLineTwo = None
    if form.validate_on_submit():
        first_name = form.FirstName.data
        last_name = form.LastName.data
        postcode = form.Postcode.data
        phone = form.Phone.data
        email = form.Email.data
        password = form.Password.data
        add_one = form.AddLineOne.data
        add_two = form.AddLineTwo.data
        user_id = AddUser(first_name, last_name, postcode,     phone, email, password, add_one, add_two)
        Parent_id = user_id
        SignUp2(Parent_id)
    return render_template('SignUp.html', form=form)


def SignUp2(Parent_id):
    form = Child1Form()
    c1_FirstName = None
    c1_LastName = None
    c1_Year = None
    return render_template('ChildSignUp.html', form=form)

【问题讨论】:

  • 你没有修饰第二个函数,老实说,我不明白这个问题。
  • 为什么一个请求会渲染两个模板?
  • 对不起@roganjosh 我尽力解释它
  • Noonoooo 我希望每个函数都打开一个 html 页面
  • 怎么样?在不同的标签?我不明白它应该如何工作。据我所知,您想渲染两个模板。你可以使用 AJAX 并更新一个
    但我不知道这应该做什么(而且我并不是说你在尝试什么是错误的,我只是真的不遵循)跨度>

标签: python html flask pycharm wtforms


【解决方案1】:

你还需要给 SignUp2 一个路由,然后你应该重定向,而不是尝试直接调用它。

(注意,所有对 None 的赋值都是没有意义的,你不要在任何地方使用任何这些变量。)

@app.route('/', methods=["GET", "POST"])
def SignUp1():
    form = UserForm()
    ...
    if form.validate_on_submit():
       ...
        return redirect(url_for('SignUp2', Parent_id=Parent_id))
    ...

@app.route('/signup2', methods=["GET", "POST"])
def SignUp2(Parent_id):
    ...

【讨论】:

  • 我假设这行得通,因为它来自你,但'SignUp.html' 在这里发生了什么?那是原始的,渲染的,返回的。
  • 你好。谢谢您的帮助。我做了你建议的改变,然后解释器告诉我'redirect'和'url_for'没有定义。所以我从 Flask 导入它们,这不再是问题。但是,现在我收到错误“TypeError: url_for() 需要 1 个位置参数,但给出了 2 个”。
  • 表单提交后,SignUp.html中什么也没有发生
  • 我应该从 SignUp.html 重定向到 SignUp2.html。
猜你喜欢
  • 2014-02-15
  • 2022-01-16
  • 1970-01-01
  • 2011-10-26
  • 2015-12-17
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多