#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