首页 > 解决方案 > 在电子邮件链接中传递给 url_for 的变量不起作用

问题描述

我正在为我的烧瓶应用程序设置注册功能。当用户请求注册时,我会向我的管理员帐户发送一封电子邮件,并希望批准或拒绝他们的请求。

我发邮件的时候,把注册表中给出的用户名、邮箱和密码传入html,就可以显示了。但是,当我尝试在使用“url_for”创建的链接中移动这些变量时,它们是无法获得的。

这是我的管理员帐户收到的电子邮件:

<p>{{ form.username.data }} has requested registration authorization.</p>
<p> Their information is as follows,</p>
<p>Username: {{ form.username.data }}</p>
<p>Email: {{ form.email.data }}</p>
<p>Password: {{ form.password.data }}</p>
<p>
  To register this user:
  <a href="{{ url_for('auth.register_user', username=form.username.data,
             email=form.email.data, password=form.password.data, _external=True) }}">
    click here.
  </a>
</p>
<p>-ADCo Inventory</p>

用户名、电子邮件和密码都在这里正确显示。这是 auth.register_user html,我只是暂时尝试显示用户名和密码,这不起作用。

{% extends 'base.html.j2' %}

{% block content %}
<h2> Register {{ username }}</h2>
<h2>pass: {{ password }}</h2>

{% endblock %}

如果有帮助,这里是 auth.register_user 的路线:

@auth_bp.route('/register_user', methods=['GET', 'POST'])
def register_user():

    form = RegistrationForm()

    return render_template('register_user.html.j2', form=form)

标签: pythonflaskurl-routing

解决方案


您已通过 get 请求传递数据,如下所示:

<a href="{{ url_for('auth.register_user', username=form.username.data,
             email=form.email.data, password=form.password.data, _external=True) }}">

因此,例如要访问用户名,您需要使用 request.args,如下所示:

username = request.args.get('username', '')

推荐阅读