Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法在Flask应用程序中实现不同链接的列表?_Python_Flask - Fatal编程技术网

Python 有没有办法在Flask应用程序中实现不同链接的列表?

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"&

我试图创建一个博客页面,其中我的要求是在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">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)