在平常開發中,咱們都是把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