【发布时间】:2013-08-03 22:05:37
【问题描述】:
这是一个 Python/Flask 问题。
更新:我今天早上醒来时有一种不好的感觉,这是正确的。 Flask 没有在源代码中创建这些怪诞的 href - 前置是在执行期间发生的。当我将鼠标悬停在链接上时,我一直在查看显示的链接地址。今天我在生成的源代码中检查了它们,它们很好 - 与我生成的完全一样。
所以现在我的问题是:为什么当我从一个项目转移到下一个项目时,运行时进程会构建某种浮动的基本 URL?如何关闭它 - 或告诉 Flask 重置到原始根应用程序目录?
= = = = =
我正在尝试生成一个包含对相关网页的引用的网页。这些页面以树状结构组织,所有项目都位于一个级别,每个项目下有多个页面。对于显示的每个页面,我想显示一个侧边栏,列出所有项目和每个项目下的所有页面,并显示每个页面的链接。
我的views.py程序设置如下:
@app.route('/')
@app.route('/abc')
@app.route('/abc/<projectName>')
@app.route('/abc/<projectName>/<pageName>')
@app.route('/<projectName>/<pageName>')
def abc_pages(projectName=None, pageName=None):
.
. [includes creating anchor tags]
.
我的问题是,当我的 URL 同时包含 projectName 和 pageName 时,我创建的锚标记会将 projectName 附加到它们前面。例如,我可以使用只有 projectName 的 URL 访问默认页面,如下所示:“example.com:5000/abc/projectA”。在该页面上,生成的锚标记与 href 一样,看起来像“example.com:5000/abc/projectB/page_b2”。
但是,如果我使用带有 projectName 和 pageName 的 URL 访问一个页面,例如“example.com:5000/abc/projectA/page_a1”,则锚点(与以前一样生成)看起来像这样:“example. com:5000/abc/projectA/projectB/page_b2"。
经过漫长而令人沮丧的搜索没有找到解决方案,我顺其自然,然后像这样删除有问题的项目名称:
@app.route('/')
@app.route('/abc')
@app.route('/abc/<projectName>')
@app.route('/abc/<projectName>/<pageName>')
@app.route('/<projectName>/<pageName>')
@app.route('/abc/<noName>/<projectName>/<pageName>') <<--- new code here
def abc_pages(noName=None, projectName=None, pageName=None):
.
. [includes creating anchor tags]
.
没有快乐。这只能让我解决问题的一个迭代。我可以点击 格式错误的“example.com:5000/abc/projectA/projectB/page_b2”,但在 page_b2 上生成的锚标记看起来像“example.com:5000/abc/projectA/projectB/ProjectC/page_c3”。
所以我的问题是为什么生成的锚标签会在它们前面加上这个历史记录(但只有 projectName 历史记录)。我每次都为锚标记生成相同的代码,但 href 不断扩展。
【问题讨论】:
-
你使用
url_for来生成你的链接吗? -
@Miguel - 不,我没有使用 url_for()。我试图让我的工作尽可能简单。不过,有问题的代码不是“纯”Flask。我只是从项目的早期版本中移植了一些 Python,而不是使用模板。并查看我上面的问题的更新。不再是代码生成问题 - 现在是运行时问题。