Маршрут Flask демонстрирует неожиданное поведениеPython

Программы на Python
Ответить
Anonymous
 Маршрут Flask демонстрирует неожиданное поведение

Сообщение Anonymous »

В настоящее время я создаю веб-приложение flask и сталкиваюсь с неожиданным поведением.
Моя структура выглядит примерно так:

Код: Выделить всё

def create_app(test_config=None):
.. some other stuff ...
from app.views import auth
app.register_blueprint(auth)

return app

Код: Выделить всё

from flask import Blueprint

auth = Blueprint('auth', __name__, url_prefix='/auth')

from .auth_views import auth as auth_bp

def register_blueprints(app):
app.register_blueprint(auth_bp)

Код: Выделить всё

from flask import Blueprint
from app.controllers import auth_controller

auth = Blueprint('auth', __name__)

#register route
@auth.route('/register', methods=['GET', 'POST'])
def register():
return auth_controller.register()

..... some other routes ....

Код: Выделить всё

from flask import render_template, request, redirect, url_for, flash, abort, Blueprint
from flask_login import login_user, logout_user, current_user
from app import db, bcrypt
from app.models import User,Role
from app.forms.auth_forms import RegistrationForm, LoginForm, ForgotPasswordForm, ResetPasswordForm
from app.utils import send_reset_email, user_has_capability
from itsdangerous import URLSafeTimedSerializer
from werkzeug.security import generate_password_hash, check_password_hash
import os
# IMport at last to avoid circular imports
from app.views import auth

@auth.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
user = User(username=form.username.data, email=form.email.data)
hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user.password_hash = hashed_password
# Assign default role 'contributor' to the new user
author_role = Role.query.filter_by(name='contributor').first()
if author_role:
user.roles.append(author_role)
db.session.add(user)
db.session.commit()
flash('Registration successful. Please log in.', 'success')
return redirect(url_for('auth.login'))
return render_template('register.html', form=form)
Теперь проблема в следующем:
  • Если я удалю @auth.route('/register', методы=[ 'GET', 'POST']) из метода регистрации auth_controller, то я всегда получаю следующую ошибку:
Не найден. Запрошенный URL-адрес не найден на сервере. Если вы
ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.
  • Если @decorator доступен в методе регистрации в auth_controller, тогда я могу получить доступ к форме регистрации, но только через 127.0.0.1:5000/auth/register, а не через 127.0.0.1:5000/register (хотя я не определил префикс url_prefix)
Что я здесь делаю не так? Как решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -behaviour
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»