Nizamovoff
@Nizamovoff
HSE CS AMI student

Почему Python flask не хочет обрабатывать POST запрос?

Есть html форма, которая отвечает за регистрацию пользователя на сайте. Но flask не хочет обрабатывать POST запрос (то есть при нажатии на кнопку POST запрос опознается flask-ом как GET запрос)

Использую flask_sqlalchemy

class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), primary_key=True, nullable=False)
    email = db.Column(db.String(64), primary_key=True, nullable=False)
    pword = db.Column(db.String(32), nullable=False)
    date = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return '<Users %r' % self.id

@application.route('/reg', methods=["GET", "POST"])
def reg():
    if request.method == "GET":
        return render_template("reg/index.html")
    else:
        username = request.form['username']
        email = request.form['email']
        pword = request.form['pword']

        user = Users(username=username, email=email, pword=pword)

        try:
            db.session.add(user)
            db.session.commit()
            return "Вы успешно зарегистрировались"
        except:
            return "При регистрации произошла ошибка"


<form>
    <div method="post" class="form">
        <h3 class="center">Регистрация</h3>
        <input type="text" name="username" placeholder="Логин">
        <input type="email" name="email" placeholder="Почта" >
        <input type="password" name="pword" placeholder="Пароль">
        <input type="password" name="pword2" placeholder="Повторите пароль">
        <input type="submit" value="Зарегистрироваться" class="white red-bg">
    </div>
</form>


P.S. Проблем с путанием /reg и /reg/index.html в браузере нет, потому что на сайте есть .htaccess файл, который убирает суффикс index.html со всех страниц
P.P.S. Хэширования паролей и их совпадения, проверки логина, почты пока нет. Сначала решить бы проблему с путанием POST и GET запроса.

При надобности вот полные коды:
python: https://pastebin.com/UMGqpNFV
html: https://pastebin.com/KUuXK8UX
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ответы на вопрос 1
@nonamefo
пробовал не в диве а в теге form указать атрибут method="post" ?
просто я с этой ошибкой тоже столкнулся при разработки сайта с тестами везде использовать метод GET не вариант и там полнейший бардак где то работает где то нет я уже и конфигурацию менял и переустанавливал не помогло. Если не поможет напиши может найду решение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 14:18
1500 руб./за проект
28 нояб. 2024, в 14:14
200000 руб./за проект
28 нояб. 2024, в 14:12
300000 руб./за проект