我获得了以下操作的说明:修改app.py文件,以便我的网站响应所有可能的URL(也就是不存在的扩展名,如'/ jobs',这意味着如果输入的URL无效,则会重定向到主页index.html页面。这是我现在的app.py的副本,有关如何执行此操作的任何想法?
from flask import Flask, render_template #NEW IMPORT!!
app = Flask(__name__) #This is creating a new Flask object
#decorator that links...
@app.route('/') #This is the main URL
def index():
return render_template("index.html", title="Welcome",name="home")
@app.route('/photo')
def photo():
return render_template("photo.html", title="Home", name="photo-home")
@app.route('/about')
def photoAbout():
return render_template("photo/about.html", title="About", name="about")
@app.route('/contact')
def photoContact():
return render_template("photo/contact.html", title="Contact", name="contact")
@app.route('/resume')
def photoResume():
return render_template("photo/resume.html", title="Resume", name="resume")
if __name__ == '__main__':
app.run(debug=True) #debug=True is optional
答案 0 :(得分:9)
我认为您正在寻找的可能只是错误处理。 Flask文档有一个部分,显示如何执行error handling。
但总结一下那里的重点:
from flask import render_template
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
您有一个应用实例,因此您只需将其添加到您的代码中即可。很明显,只要有404或页面不存在,就会呈现 404.html 。
假设您正在使用jinja模板 404.html 的内容可能是:
{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
<h1>Page Not Found</h1>
<p>What you were looking for is just not there.
<p><a href="{{ url_for('index') }}">go somewhere nice</a>
{% endblock %}
这需要一个基本模板(此处为 layout.html )。说现在你不想使用jinja模板,只需将它用作 404.html :
<h1>Page Not Found</h1>
<p>What you were looking for is just not there.
<p><a href="{{ url_for('index') }}">go somewhere nice</a>
在您的情况下,因为您想要查看主页(可能是 index.html ):
@app.errorhandler(404)
def page_not_found(e):
return render_template('index.html'), 404