我有一个图书搜索页面。用户搜索书籍时,页面中会显示相关书籍的列表。所有行都有一个超链接,当用户单击时,它会转到详细信息页面。我使用/ is / 1236BCD2等isbns生成详细信息页面作为搜索的扩展。因此,对于每本书,此页面地址是不同的。这是问题,我用于所有页面的styles.css无法应用到这些页面。我认为这是因为烧瓶结构。似乎当它尝试打开页面时,它搜索的是/search/static/styles/styles.css而不是/search/1236BCD2/static/styles/styles.css。我应该怎么做才能解决它?
答案 0 :(得分:0)
模板继承允许您构建一个基本的“骨架”模板,该模板包含站点的所有常见元素,并定义子模板可以覆盖的块。
然后,如果数据库中有书籍,则创建详细信息视图。
@app.route('/details/<bookid>')
def details(id):
# search for a book with that id in the database
答案 1 :(得分:0)
不幸的是,您的问题有些模糊,所以我的回答也有些模糊。
app = Flask(__name__)
。在这种情况下,默认情况下,“ app.py”所在的目录将是您的应用程序的根目录。默认情况下,Flask期望一个名为“ static”的文件夹与该文件存在于同一目录中。但是,可以将静态文件夹的名称更改为所需的名称。通过执行类似app = Flask(__name__, static_folder="search")
的操作,可以将静态文件夹更改为“搜索”而不是“静态”。有关应用程序配置参数,请参见here。因此,根据您的应用配置,Flask应该在/static/styles/styles.css
或/search/styles/styles.css
中查找您的静态文件。如果您希望Flask在/static/1236BCD2/styles/styles.css
或/search/1236BCD2/styles/styles.css
之类的目录中找到“ styles.css”,则可能是您不了解目录结构必须与Flask应用程序的配置方式相匹配,还是为每本书(不希望这样做)生成不同的目录和不同的styles.css。url_for()
函数来确保Flask可以将静态资产链接到HTML页面。如果您想对值进行硬编码(我不建议),则可以像<link rel="stylesheet" href='/static/styles/styles.css'>
这样链接资产,也可以像url_for()
这样使用<link rel="stylesheet" href='url_for("static", filename="styles/styles.css)'>
。 “文件名”参数值始终相对于静态目录。