zoukankan      html  css  js  c++  java
  • Django应用中的静态文件处理

    在日常开发中,我们都是把Django的Debug模式打开,方便调试,在这个模式下,由Django内置的Web服务器提供静态文件服务,不过需要进行一些配置,才能正确访问。

    配置settings

    # 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 manage.py collectstatic
    

    命令来把各个包中的静态文件收集到我们前面定义的STATIC_ROOT中,然后再把这个路径交由nginx~

    nginx配置

    # 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来提供访问~

    欢迎交流

    我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

  • 相关阅读:
    基础 之 数组
    记录某个进程任意的采集时间内,top 10 的cpu和内存值的平均和求和
    8、广度优先搜索
    7、散列表
    计算机网络之从接入网到互联网
    计算机网络
    15、python之导入模块
    14、函数之匿名函数(lambda)
    13、python中的函数(闭包与装饰器)
    6、快速排序
  • 原文地址:https://www.cnblogs.com/deali/p/13443656.html
Copyright © 2011-2022 走看看