我是Django的新手,请原谅我,如果这是我不应该考虑的事情,但我希望我的应用能够链接到大量静态HTML页面(足以创建URL路径)每一个都是不合理的)并且会不断上传(由我通过FTP上传)。
我已经通过将这些HTML文件的路径添加到我的STATICFILES_DIRS []
而在开发服务器上工作,但是当我将代码推送到生产环境时,这似乎不起作用。
我尝试设置一个STATIC_ROOT
并运行collectstatic,但这没有用,我也担心即使我有那个工作,每次上传新文件时我都要运行collectstatic。
所以我的问题是,这是否合理?我应该避免在我的项目旁边托管这些静态HTML文件并将它们保留在现在的位置,在单独的域下的单独服务器上吗?
我最初想要将它们放在一起的唯一原因是因为除了静态HTML文件外,还有一个我的Django应用程序显示数据的SQL LITE数据库(这是我的应用程序的全部目的)。但是,我可以实现另一种获取SQL LITE文件的方法,例如使用ftlib
。请注意,我根本不需要该数据库连接到Django - 我只需要从中读取数据。
答案 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
。