使用StaticGenerator从Django项目生成静态HTML

0 投票
1 回答
1148 浏览
提问于 2025-04-16 11:07

我正在尝试为我用Django搭建的网站生成静态HTML。到目前为止,我找到的工具是 StaticGenerator。我觉得它应该和GitHub页面上的示例差不多,但我写的代码如下,结果出现了下面的错误。

代码:

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
os.environ["DJANGO_SETTINGS_MODULE"] = "site.settings"
quick_publish('/')

错误(已编辑以简化内容):

Traceback (most recent call last):
    quick_publish('/')
  File "/usr/local/lib/python2.6/dist-packages/staticgenerator/__init__.py", line 232, in quick_publish
    return StaticGenerator(*resources).publish()
  File "/dist-packages/staticgenerator/__init__.py", line 229, in publish
    return self.do_all(self.publish_from_path)
  File "/dist-packages/staticgenerator/__init__.py", line 223, in do_all
    return [func(path) for path in self.resources]
  File "/dist-packages/staticgenerator/__init__.py", line 187, in publish_from_path
    filename, directory = self.get_filename_from_path(path)
  File "/dist-packages/staticgenerator/__init__.py", line 179, in get_filename_from_path
    filename = self.fs.join(self.web_root, path.lstrip('/')).encode('utf-8')
  File "/dist-packages/staticgenerator/filesystem.py", line 38, in join
    return os.path.join(paths[0], *[path.lstrip("/") for path in paths[1:]])
  File "/usr/lib/python2.6/posixpath.py", line 67, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'tuple' object has no attribute 'endswith'

1 个回答

1

好的,经过查看你的追踪记录,我猜你的 settings.WEB_ROOT 是一个元组。

相关的代码行:

# web root set
self.web_root = getattr(self.settings, 'WEB_ROOT')

# web root used 
filename = self.fs.join(self.web_root, path.lstrip('/')).encode('utf-8')

# breaks on real os.path.join
return os.path.join(paths[0], *[path.lstrip("/") for path in paths[1:]])

撰写回答