У меня есть код на Python, который должен работать с html-кодом. Кнопка подтверждения не работает. Я помещу коды ниже

#python #html

#python #HTML

Вопрос:

Предполагается, что приложение принимает адрес электронной почты пользователя с высотой пользователя. Затем он должен отправить электронное письмо на адрес электронной почты и отправить им электронное письмо с подтверждением вместе со средней высотой, которая вычисляется путем нахождения среднего значения всех введенных адресов электронной почты.

Существует проблема, всякий раз, когда я нажимаю на кнопку подтверждения, она перенаправляет меня на страницу ошибки: СТРАНИЦА 404 НЕ НАЙДЕНА.

app.py код:

 from flask import Flask, render_template, request
from flask.ext.sqlalchemy import SQLAlchemy
from send_email import send_email
from sqlalchemy.sql import func
        
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='postgresql://postgres:postgres123@localhost/height_collector'
db=SQLAlchemy(app)
        
class Data(db.Model):
    __tablename__="data"
    id=db.Column(db.Integer, primary_key=True)
    email_=db.Column(db.String(120), unique=True)
    height_=db.Column(db.Integer)

    def __init__(self, email_, height_):
        self.email_=email_
        self.height_=height_

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/success", methods=['POST'])
def success():
    if request.method=='POST':
        email=request.form["email_name"]
        height=request.form["height_name"]
        print(email, height)
        if db.session.query(Data).filter(Data.email_ == email).count()== 0:
            data=Data(email,height)
            db.session.add(data)
            db.session.commit()
            average_height=db.session.query(func.avg(Data.height_)).scalar()
            average_height=round(average_height, 1)
            count = db.session.query(Data.height_).count()
            send_email(email, height, average_height, count)
            print(average_height)
            return render_template("success.html")
    return render_template('index.html', text="Seems like we got something from that email once!")
if __name__ == '__main__':
    app.debug=True
    app.run(port=5005)
  

send_email.py код:

 from email.mime.text import MIMEText
import smtplib
        
def send_email(email, height, average_height, count):
    from_email="myemail@gmail.com"
    from_password="mypassword"
    to_email=email

    subject="Height data"
    message="Hey there, your height is <strong>%s</strong>. <br> Average height of all is <strong>%s</strong> and that is calculated out of <strong>%s</strong> people. <br> Thanks!" % (height, average_height, count)
        
    msg=MIMEText(message, 'html')
    msg['Subject']=subject
    msg['To']=to_email
    msg['From']=from_email

    gmail=smtplib.SMTP('smtp.gmail.com',587)
    gmail.ehlo()
    gmail.starttls()
    gmail.login(from_email, from_password)
    gmail.send_message(msg)
  

index.html код:

 <!DOCTYPE html>
<html lang="en">
    <title> Data Collector App</title>
    <head>
        <link href="../static/main.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h1>Collecting height</h1>
            <h3>Please fill the entires to get population statistics on height</h3>
            <div class="email"> {{text | safe}} </div>
            <form action="{{url_for('success')}}" method="POST">
                <input title="Your email will be safe with us" placeholder="Enter your email address" type="email" name="email_name" required> <br>
                <input title="Your data will be safe with us" placeholder="Enter your height in cm" type="number" min="50", max="300" name="height_name" required> <br>
                <button type="submit"> Submit </button>
            </form>
        </div>
    </body>
</html>
  

success.html код:

 <!DOCTYPE html>
<html lang="en">
    <title> Data Collector App</title>
    <head>
        <link href="../static/main.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <p class="success-message"> Thank you for your submission! <br>
                You will receive an email with the survey results shortly.
            </p>
        </div>
    </body>
</html>
  

Комментарии:

1. Вы пробовали устанавливать для действия формы значение «/success»?

2. Да, я только что попробовал, все еще выдает мне страницу 404