我得到了一个简单的flask服务器,管理登录页面。网页工作正常:登录,注销,注册等登录页面后,有一个“home.html”页面3图像。我试图做的是通过点击图像打开第二个网页。我试图加载的页面被称为“output.html”,它是在文件夹“templates”
文件夹结构:
- webserver
- 例如
- 网站
- 图像
- 静态
- 模板
- base.html
- home.html
- login.html
- main.html
- output.html
- sign_up.html
*init.py - auth.py
- models.py
Flask脚本:
from flask import Flask, render_template, url_for, redirect, send_from_directory, request
from flask_login import UserMixin, login_user, LoginManager, login_required, logout_user, current_user
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import InputRequired, Length, ValidationError
app = create_app()
#app = Flask(__name__, template_folder='templates')
app.config['SECRET_KEY'] = 'thisisasecretkey'
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
class RegisterForm(FlaskForm):
username = StringField(validators=[
InputRequired(), Length(min=4, max=20)], render_kw={"placeholder": "Username"})
password = PasswordField(validators=[
InputRequired(), Length(min=8, max=20)], render_kw={"placeholder": "Password"})
submit = SubmitField('Register')
class LoginForm(FlaskForm):
username = StringField(validators=[
InputRequired(), Length(min=4, max=20)], render_kw={"placeholder": "Username"})
password = PasswordField(validators=[
InputRequired(), Length(min=8, max=20)], render_kw={"placeholder": "Password"})
submit = SubmitField('Login')
#@app.route("/images/<path:filename>")
#def serve_image(filename):
# return send_from_directory("images", filename)
@app.route('/')
def index():
return render_template('home.html')
@app.route('/output', methods=['GET', 'POST'])
def output():
return render_template('output.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
return render_template('login.html', form=form)
@app.route('/dashboard', methods=['GET', 'POST'])
@login_required
def dashboard():
return render_template('dashboard.html')
@app.route('/logout', methods=['GET', 'POST'])
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm()
return render_template('register.html', form=form)
if __name__ == '__main__':
#app.run()
app.run()
字符串
HTML端:
<div id="Ohm" class="tabcontent">
<h3>Escolha um dos três circuitos</h3>
<p>Clique OK para seguir</p>
<div>
<img
src="../images/circuit_R1.png"
width="30%"
height="auto"
alt="circuito R1"
class="responsive"
onclick="redirecionarPaginaEAcionar('10010101', '/output')"
style="cursor: pointer;" >
<img
src="../images/circuit_R2.png"
width="30%"
height="auto"
alt="circuito R1"
class="responsive"
onclick="accionarReles('01011011')"
style="cursor: pointer;" >
(...)
<script>
function accionarReles(parametro)
{
(...)
}
function redirecionarPaginaEAcionar(parametro, url) {
accionarReles(parametro); // Chama a função accionarReles com o parâmetro especificado
window.location.href = url; // Redireciona para a URL especificada
}
</script>
型
所以,在我运行服务器并登录后,脚本调用home.html。当点击图像时,另一个html页面应该打开:output.html。然而,由于程序是我得到一个404错误页面找不到。
但是,如果我将输出替换为登录,这是同一个文件夹中的页面,一切都是正确的。
我找不到错误/错误,我不能打开另一个页面,除非是“login.html”,即使我把它移到“模板”之外,所以,我需要一些帮助来找到错误
1条答案
按热度按时间nfeuvbwi1#
要解决此问题,您应该使用Flask提供的
url_for
函数来生成output
路由的URL字符串
通过使用
url_for('output')
,Flask将为output
路由生成正确的URL