我将静态文件放在与静态文件相关的app目录下。
例如,
image.jpg用于exmapleapp下的模板。所以我将image.jpg文件放在目录/project/exampleapp/static/image.jpg
在Debug=True
设置中,Dajngo通过django.contrib.staticfiles自动查找静态文件。如果您将静态文件放在目录/project/static/
中,则可以在settings.py中设置STATICFILES_DIRS = []
或在urls.py中添加urlspatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
(如果您想手动提供静态文件)
collectstatic.
我现在很困惑。
这是我最初的想法。
第1步:在设置中使用DEBUG = True在本地工作并测试代码。你不断在git repo中保存你的代码。
第2步:您已准备好在服务器中部署代码。您克隆您的repo并设置apache服务器以正确运行django框架(Alias static,WSGI Daemon进程)。你使用apache服务器python manage.py collectstatic
来提供静态文件。
第3步:您继续在本地工作以改进您的代码,并将此改进应用于服务器中的代码并进行测试。
我感到困惑并且有疑问。
Q1 :如果您为部署执行collectstatic,则会有静态文件夹(根据STATIC_ROOT设置),其中包含在每个应用程序文件夹中散布的所有静态文件。
你在本地做collectstatic并只发送收集所有服务器的静态文件夹吗?或者您是否根据Apache服务器中的静态别名设置在服务器中执行collectstatic?
Q2 :您是否在本地更改了DEBUG = False和ALLOWED_HOSTS = [服务器IP]并在git repo中保存代码并将其拉入服务器?
好吧,现在我对使用github进行开发工作并使用带有Django设置的github将其部署到服务器感到困惑。
请告诉我你是否能清楚地理解我的问题。
答案 0 :(得分:1)
您正在使用static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在开发模式下提供静态文件。但在生产中,(意为DEBUG = False
)它将是空列表。 (static
返回空列表)。然后 collectstatic ,你可以使用开发或生产。它的目的是将所有静态文件复制到STATIC_ROOT
。所以
Q1 :每个人都通过网络服务器(Apache,Nginx)进行生产收集静态文件
Q2 :对于生产和开发,请编写不同的settings
文件。你可以在这里看到前How to manage local vs production settings in Django?