Python 有没有办法在Flask应用程序中实现不同链接的列表?
我试图创建一个博客页面,其中我的要求是在html页面中列出一组od链接Python 有没有办法在Flask应用程序中实现不同链接的列表?,python,flask,Python,Flask,我试图创建一个博客页面,其中我的要求是在html页面中列出一组od链接 app.py: @app.route("/blog") def blog(): return render_template('blog.html') blog.html: {% extends "index.html" %} {% block content %} <ul> <li> <a href="/templates/chapter 1.html"&
app.py
:
@app.route("/blog")
def blog():
return render_template('blog.html')
blog.html
:
{% extends "index.html" %}
{% block content %}
<ul>
<li>
<a href="/templates/chapter 1.html">Chapter 1</a>
</li>
<li>
<a href="/templates/chapter 2.html">Chapter 2</a>
</li>
<ul>
{% endblock content %}
我确信这不会起作用,因为它指向不同的URL,是否有人能指导我如何在Flask app中实现章节列表?如果您已经有静态html文件,您应该将其作为静态文件,如中所述。然后,将这些文件的URL放在主页中:
url_for('static', filename='chapter1.html')
模板
目录未链接到URL,该目录中的文件未“发布”。您不应该在没有处理(执行模板)的情况下将您想要提供服务的文件放在那里
使用默认配置,只有静态
目录中的文件才能通过/static/
URL路径前缀访问,请参阅Flask Quickstart的
templates
目录的目的是使用可加载为Jinja2模板的文件,您可以在为特定URL向Flask注册的端点函数中使用该函数
您可能想尝试第一种方法,它涵盖了这两种方法,并提供了更详细的信息
对于博客站点,通常的模式是将博客文章数据以Python可以轻松加载的方式存储在数据库或文本文件中,然后使用单个模板呈现内容。您需要使用一个模式注册一个URL,该模式将调用一个可以加载任何博客页面数据的函数,然后使用博客页面模板呈现输出:
@app.route('/blog/<page_name>')
def blog_page(page_name):
page_data = load_blog_page(page_name)
if not page_data: # no page? Produce a not found error.
abort(404)
return render_template('blog_page.html', **page_data)
@app.route(“/blog/”)
def博客页面(页面名称):
页面\数据=加载\博客\页面(页面\名称)
如果没有页面数据:#没有页面?产生未找到的错误。
中止(404)
返回呈现模板('blog\u page.html',**页面数据)
当浏览器访问以/blog/
开头的URL时,将调用上述函数,并将下一部分作为页面名称
变量调用;e、 g./blog/chapter-1
将导致页面名称
设置为'chapter-1'
。请注意,URL中不能有空格(空格必须编码为%20
,才能使URL仍然是URL)
然后,该函数加载页面数据(使用
load\u log\u page()
函数,您必须自己编写),然后假设page\u数据
不为空或None
或其他表示页面实际上不存在的假y值,则使用render\u template()
函数生成HTML输出render_template()
将使用文件templates/blog_page.html
作为此处的模板文件,并且假定page_data
是一个字典,其键值对构成模板可以使用的变量。我不明白您为什么这样做。为什么你会认为你可以直接链接到模板?我想有一种方法可以直接连接静态页面,在博客页面内,通过调用应用程序中的博客功能。你能告诉我怎么做吗?我已经把图片贴在这里了。还有别的方法吗
@app.route('/blog/<page_name>')
def blog_page(page_name):
page_data = load_blog_page(page_name)
if not page_data: # no page? Produce a not found error.
abort(404)
return render_template('blog_page.html', **page_data)