在Django中提供静态HTML

问题描述 投票:2回答:1

我是Django的新手,请原谅我,如果这是我甚至不应该考虑的事情,但我希望我的应用程序能够链接到大量的静态HTML页面(足以创建每个页面的URL路径)这将是不合理的)并且会不断上传(由我通过FTP上传)。

通过将这些HTML文件的路径添加到我的STATICFILES_DIRS [],我已经在开发服务器上工作,但是当我将代码推送到生产环境时,这似乎不起作用。

我尝试设置一个STATIC_ROOT并运行collectstatic,但这没有帮助,我也担心即使我有这个工作,我每次上传新文件时都要运行collectstatic。

所以我的问题是,这是否合理?我应该避免在我的项目旁边托管这些静态HTML文件并将它们保留在现在的位置,在单独的域下的单独服务器上吗?

我最初想要将它们放在一起的唯一原因是因为除了静态HTML文件之外,还有一个我的Django应用程序显示数据的SQL LITE数据库(这是我的应用程序的全部目的)。但是,我可以实现另一种获取SQL LITE文件的方法,例如使用ftlib。请注意,我根本不需要该数据库连接到Django - 我只需要从中读取数据。

django python-3.x
1个回答
2
投票

您不需要为每个页面编写URL。您可以从URL“捕获”请求的页面名称,并根据其值呈现页面。

# urls.py
url(r'^page/(?P<page_name>\w+)/$', my_view)


# views.py
import os
from django.http import HttpResponse, Http404

FTP_UPLOAD_DIR = '/path/to/directory/where/you/upload/files/'


def my_view(request, page_name):

    # check if requested page exists
    if os.path.exists(FTP_UPLOAD_DIR + page_name):
        # if yes, then serve the page
        with open(FTP_UPLOAD_DIR + page_name) as f:
            response = HttpResponse(f.read())
        return response

    else:
        raise Http404

上面,我们直接从upload文件夹中读取文件,因此您无需运行collectstatic

© www.soinside.com 2019 - 2024. All rights reserved.