在Django中提供静态HTML

时间:2017-12-29 16:27:42

标签: django python-3.x

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您不需要为每个页面编写网址。你可以捕捉"来自网址的请求的网页名称,并根据其值来呈现网页。

# 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

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