Egy cookiecutter Flask alkalmazás módosításán dolgozom. Megpróbálom követni a következőt: https://realpython.com/blog/python/handling-email-confirmation-in-flask/ e-mail-engedély hozzáadásához.
Az alkalmazás megerősítő e-mailt küld. Ebben az esetben az e-mail egy megerősítő linket tartalmaz, amely így néz ki:
http://127.0.0.1:5000/register/ImNsdWVtYXJpbmUxQG1haWxpbmF0b3IuY29tIg.CajQIA.Pn20l8bkpo3muh1Nk6TSguSoF0I
(amely a „[email protected]” beágyazott e-mailt tartalmazza a tokenben.)
Ez megfelelően működik a regiszter funkcióval (a nyilvános tervben):
@blueprint.route("/register/<token>", methods=['GET', 'POST'])
def register(token):
form = RegisterForm(request.form, csrf_enabled=False)
email = confirm_token(token)
....
A kódom másik részében a felhasználót a regisztrációs funkcióhoz szeretném átirányítani, és a következő sort használtam:
return redirect(url_for('public.register'))
Ebben az esetben nem használok tokent! Ennek eredménye:
Werkzeug.routing.BuildError BuildError: ('public.register', {}, None)
Feltételezem, hogy ez azért van, mert a második módszernél nincs token. Mi a legjobb módja annak, hogy kezeljük azt a lehetőséget, hogy rendelkezünk-e jogkivonattal a regiszter funkcióban?
Teljes visszakövetés:
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1477, in full_dispatch_reques
rv = self.handle_user_exception(e)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask_debugtoolbar\__init__.py", line 124, in dispatch_request
return view_func(**req.view_args)
File "C:\envs\r2\mini\myflaskapp\views\user.py", line 144, in confirm_email
return redirect(url_for('public.register'))
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\flask\helpers.py", line 305, in url_for
force_external=external)
File "C:\envs\virtalenvs\flask_mini\lib\site-packages\werkzeug\routing.py", line 1678, in build
raise BuildError(endpoint, values, method)