在平常开发中,咱们都是把Django的Debug模式打开,方便调试,在这个模式下,由Django内置的Web服务器提供静态文件服务,不过须要进行一些配置,才能正确访问。java
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ] STATIC_ROOT = os.path.join(BASE_DIR, 'static_collected') STATIC_URL = '/static/' MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media') MEDIA_URL = '/media/'
from django.conf import settings from django.urls import path, include from django.conf.urls.static import static urlpatterns = [ ... ] # 调试模式下的静态文件服务 if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这样就能够在Debug模式下正常访问静态文件了,不过咱们在把应用部署到生产环境以后,为了安全起见,不能开启Debug模式,这个时候就须要使用nginx或者Apache之类的服务器来提供静态文件服务。python
在这以前,还须要运行linux
python manage.py collectstatic
命令来把各个包中的静态文件收集到咱们前面定义的STATIC_ROOT
中,而后再把这个路径交由nginx~android
# Django media location /media/ { alias /path/to/django/static/media/; # your Django project's media files - amend as required } location /static/ { alias /path/to/django/static_collected/; # your Django project's static files - amend as required }
同时关闭Django的Debug模式,这样静态文件就都会使用nginx来提供访问~nginx
我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题均可以在公众号后台留言~django