所以我的问题是我想要一个拥有单个navbar.html文件的网站。我可以用来添加到我网站的其他页面。我认为没有javascript的最佳方法,我试图避免因为兼容性问题(学校网站所以我试图获得最佳的兼容性)。我正在为我的学校写这个网站,所以我不知道从现在开始会发生什么,但我想创建一个自动化系统,可以解析html文件的文件夹,然后进入每个文件,找到{{1然后使用来自一个中央navbar.html的内容替换这两个标签之间的所有内容,以便有人可以更改navbar.html然后运行此脚本,它只会自动更新网页。
现在我不是要求任何人为我编写代码我对python有基本的中间理解,所以如果有人能指出我正确的方向,比如可能会有什么方法可以解决这个问题。谢谢你的帮助。
编辑:我想只使用标准库,以便尽可能简单地移动,最好是只有一个* .py文件
编辑:请不要告诉我只是去获得一个我不能做的工具服务器没有任何服务器端编程语言我能做的最好是编辑本地文件然后将静态页面上传到服务器。
编辑:修复它以便它在主题上。希望。
答案 0 :(得分:1)
我看到很多人批评你要做的事,我要加入他们。这是实施导航栏的一种可怕方式,以及对“更新”网站的可怕程序性要求。我非常坚定你的学校认为这不是一个明智的决定,最终会以这种古老的方式浪费更多的时间,而不是像PHP或Python这样的免费替代方案。
话虽如此,我也会帮助您解决问题,因为看起来(根据您的赞扬和回复)实施模板引擎或动态网页内容是您无法控制的,因此不是一种选择。一种方法是将导航栏替换脚本(让我们称之为script.py)放在HTML目录的顶部,并坐在新的navbar.html文件旁边。
首先获取文件,使用os.walk
查找子目录中的所有文件:
import os
for root, dirs, files in os.walk(os.join(os.getcwd(), "html_dir"):
for file in files:
# do something with the directories
for dir in dirs:
# do something with the directories
显然,您需要使其递归,以便它适用于所有子文件夹中的所有HTML文件。
接下来,就更换而言,我建议您阅读整个navbar.html文件,其中包含以下内容:
with open('file', 'r') as target_file:
replacement_text = target_file.read()
要进行实际替换,我建议使用正则表达式。正则表达式将根据内容而有所不同,可能需要根据所使用的确切数据进行调整。如果这些数据发生变化,它们也容易破裂。
import re
new_html = re.sub(r'<nav id="mainNav">.*?</nav>', replacement_text, original_text)
你需要将它们拼凑在一起,让它自己工作,但我觉得这是解决这个问题的可靠方法。但是,我重复一遍:我不禁想到有人最终会使用这种方法更新他们的网站。此外,每次运行此文件时都要备份文件,因为失败可能会导致无意中替换/删除文本。
答案 1 :(得分:0)
在创建网页/网站时使用模板引擎:例如Jinja
您可以使用base html template。你也可以在其他引擎中做类似的事情
并且有很多选项:http://wiki.python.org/moin/Templating
如果您决定不使用引擎,请创建一个base.html,并且您可以使用它,因为它不具有可扩展性/可读性等。
stuff stuff $$$my_flag$$$ stuff stuff
并将$$$my_flag$$$
替换为字符串replaceAll。这就是你想要的吗?
答案 2 :(得分:-1)
服务器是否有SSI或PHP?有一个包含功能,可以做你想要的。查找SSI包括
http://www.htmlgoodies.com/beyond/webmaster/article.php/3473341/SSI-The-Include-Command.htm
所以你只需更改导航栏文件,它就会在包含它的所有页面上发生变化