• 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 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

  • 相关阅读:
    Android ViewPager2 可垂直左右滑动使用【java】
    Android常用优秀开源框架
    Content-Type类型大全
    NodeJs FS 文件系统模块
    Nodejs 包与 npm第三方模块安装和 package.json 以及 cnpm
    Flutter Plugin开发简单示例
    Mysql创建数据库以及用户分配权限
    Android仿微信QQ等实现锁屏消息提醒
    android 桌面图标添加数字角标
    android7/8新特性 画中画、shortcut和分屏模式
  • 原文地址:https://www.cnblogs.com/deali/p/13443656.html
Copyright © 2020-2023  润新知