Python 3.x 如何将样式应用于flask中生成的html页面

Python 3.x 如何将样式应用于flask中生成的html页面,python-3.x,flask,Python 3.x,Flask,我有一个图书搜索页面。当用户搜索一本书时,页面中会显示相关书籍的列表。所有行都有一个超链接,当用户单击该超链接时,它将转到详细信息页面。我使用ISBN(如/search/1236BCD2)生成详细信息页面,作为搜索的扩展。所以对于每本书,这个页面地址是不同的。问题是,我用于所有页面的styles.css不能应用于这些页面。我想这是因为烧瓶的结构。当它试图打开它要搜索的页面时,似乎是/search/static/styles/styles.css而不是/search/1236BCD2/static

我有一个图书搜索页面。当用户搜索一本书时,页面中会显示相关书籍的列表。所有行都有一个超链接,当用户单击该超链接时,它将转到详细信息页面。我使用ISBN(如/search/1236BCD2)生成详细信息页面,作为搜索的扩展。所以对于每本书,这个页面地址是不同的。问题是,我用于所有页面的styles.css不能应用于这些页面。我想这是因为烧瓶的结构。当它试图打开它要搜索的页面时,似乎是/search/static/styles/styles.css而不是/search/1236BCD2/static/styles/styles.css。我应该怎么做才能修复它?

使用

模板继承允许您构建一个基本“骨架”模板,该模板包含站点的所有公共元素,并定义子模板可以覆盖的块

然后,如果数据库中有书籍,请创建详细信息视图

@app.route('/details/<bookid>')
def details(id):
    # search for a book with that id in the database
@app.route(“/details/”)
def详细信息(id):
#在数据库中搜索具有该id的书籍

不幸的是,你的问题有点模糊,所以我的回答也有点模糊

  • 您的Flask应用程序如何设置为服务静态文件,这是一个问题吗?您的目录结构是否与Flask应用程序配置匹配,以便Flask可以找到您想要的静态文件?通常,Flask希望在应用程序的根目录中存在一个名为“static”的文件夹。应用程序的根目录是包含Flask应用程序的文件被实例化的目录。例如,您可能有一个名为“app.py”的文件,其中包含一行
    app=Flask(\uuu name\uuuu)
    。在这种情况下,“app.py”所在的目录默认为应用程序的根目录。默认情况下,Flask希望名为“static”的文件夹与该文件位于同一目录中。但是,静态文件夹的名称可以更改为您想要的任何名称。您可以通过执行类似于
    app=Flask(\uuu name\uuuuu,static\u folder=“search”)
    的操作,将静态文件夹更改为“search”而不是“static”。有关应用程序配置参数,请参阅。因此,Flask应该在
    /static/styles/styles.css
    /search/styles/styles.css
    中查找静态文件,具体取决于您的应用程序配置。如果您希望Flask在
    /static/1236BCD2/styles/styles.css
    /search/1236BCD2/styles/styles.css
    等目录中找到“styles.css”,那么您可能不明白您的目录结构必须与Flask应用程序的配置方式相匹配,或者为每本书生成不同的目录和不同的style.css(我希望您没有这样做)
  • 我假设您没有为每本书动态生成文件夹和CSS文件。假设您现在已确保将Flask应用程序配置为与项目目录结构相匹配,则可以使用
    url\u for()
    函数确保Flask可以将静态资产链接到HTML页面。如果您想硬编码值(我不推荐),您可以链接您的资产,如
    ,也可以使用
    url\u for()
    。“filename”参数值始终相对于静态目录
  • 我的直觉是,您有静态文件的默认Flask应用程序配置,但您不知道如何使用Jinja2模板引擎链接HTML页面中的静态资产。有关在Flask中提供静态文件的一般信息,请参阅。如果我错了,您有一些复杂的CSS生成和使用,您需要配置应用程序来处理这些问题,那么您需要查看Flask蓝图。Flask Blueprint允许您为每个Blueprint设置不同的静态目录,然后您可以创建处理各种书籍所需的任意多个Blueprint

  • 回答好问题。并非所有的问题都可以或应该在这里得到回答。首先,感谢您的努力和长期的解释。事实上,我知道问题是什么,并在寻找解决方案,也许我不能很明显地表达自己。对不起,语言问题。我知道flask目录结构,我有静态文件夹和模板文件夹。该应用程序的其他页面工作正常,问题是关于我生成的像@app.route(“/search/”)这样的书籍详细信息页面。对于standart页面,flask服务器将搜索此路径:/search/static/styles/styles.css。因此,对于上面提到的这类已生成的页面,此路径不起作用。我知道继承是解决办法。