解决django 多个APP时 static文件的问题

 更新时间:2020年03月27日 10:48:06   作者:luguanyou  
这篇文章主要介绍了解决django 多个APP时 static文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

每个APP下都有自己的static文件夹,那如何设置将不会混用呢

以下是实例(我项目里有两个APP(login 和main))

1、首先在setting 文件修改配置路径

STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, "MGStudio", "static"),
  os.path.join(BASE_DIR, "main", "static"),
  os.path.join(BASE_DIR, "login", "static"),
]

2、在每个APP下的static下建立以APP名相同的文件夹

比如我在login/static/login/

放入样式JS CSS等

3、如何调用样式

{% static 'main/img/firefox-logo-small.jpg' %}

{% static 'login/img/name.png' %}

补充知识:Django项目上线后无法加载xadmin等的静态文件问题(django的settings中几个static设置项的关系)

多数是static的settings.py设置问题.

这里不设置好其他app的static你同样是加载不了

1.settings.py里面这样设置.

STATIC_URL = '/static/'
#这里注意不要和你项目static文件夹名一样,因为这个是用来存放收集来的所有静态文件的.
#如果你设置相同,等运行collectstatic时会警告.
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')

# 我们的静态文件分开三个部分
# 这里我们设为三个路径
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
  os.path.join(BASE_DIR, 'myapp', 'static'),
  os.path.join(BASE_DIR, 'userapp', 'static'),
  ]

上面第一个为项目根目录下static.

下面两个是其他app的static,myapp,和userapp分别是你的其他app的名字

比如xadmin下有static,就应该加上

os.path.join(BASE_DIR, ‘xadmin', ‘static')

在urls里面设置(如果有多个在主urls设置)

from blog.settings import STATIC_ROOT

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  
  # 添加静态文件的访问处理函数
  url(r'^static/(?P<path>.*)/$', serve, {'document_root': STATIC_ROOT}),

2.在项目目录下运行

python manage.py collectstatic

这时会把所有刚才你设置指定的static搜集到一个目录

3.在nginx里面设置static目录路径为刚才设置的static1

    charset utf-8;
    location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8997;
      uwsgi_param UWSGI_SCRIPT blog.wsgi;
      uwsgi_param UWSGI_CHDIR /home/wwwblog/myblog/;
 
    }
    location /static/ {
    alias /home/wwwblog/myblog/static1/; #静态文件目录
    }

下面是相关知识学习.

django的settings中几个static设置项的关系

django的settings中包含三个static相关设置项:

STATIC_ROOT
STATIC_URL
STATICFILES_DIRS

STATIC_URL 好理解,就是映射到静态文件的url,一般为/static/

STATICFILES_DIRS 是个列表,放各个app的static目录及公共的static目录

STATIC_ROOT 是总的static目录,可以使用命令自动收集static文件

更加详细的解释:

STATIC_ROOT:运行manage.py collectstatic后静态文件将复制到的目录。注意:不要把你项目的静态文件放到这个目录。这个目录只有在运行collectstatic时才会用到。我最开始想当然的以为这个目录和MEDIA_ROOT的作用是相同的,致使在开发环境下一直无法找到静态文件。

STATIC_URL:设置的static file的起始url,这个只可以在template里面引用到。这个参数和MEDIA_URL的含义差不多。

STATICFILES_DIRS:除了各个app的static目录以外还需要管理的静态文件位置,比如项目公共的静态文件差不多。和TEMPLATE_DIRS的含义差不多。

各个APP下static/目录下的静态文件django的开发服务器会自动找到,这点和以前APP下的templates目录差不多。

假设有个工程djangodemo,有两个app为demo1跟demo2

django处理static的方法是把各个app各自的static合并到一处

比如

djangodemo/djangodemo/static 放置公共静态文件

djangodemo/demo1/static 放置该app自己的静态文件

djangodemo/demo2/static 放置该app自己的静态文件

可以这么设置:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'static'),
 os.path.join(BASE_DIR, 'demo1', 'static'),
 os.path.join(BASE_DIR, 'demo2', 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'static1')

使用命令

python manage.py collectstatic

就会自动把所有静态文件全部复制到STATIC_ROOT(即static1)中

如果开启了admin或者(xadmin),这一步是很必要的,不然部署到生产环境的时候会找不到样式文件

以上这篇解决django 多个APP时 static文件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android应用开发之代码混淆

    Android应用开发之代码混淆

    Android项目中的混淆很easy,之所以写这篇总结是由于近期发现公司的代码居然没有混淆,反编译后代码随手可得。很震惊。
    2014-07-07
  • Android ImageView 固定宽高比例的实现方法

    Android ImageView 固定宽高比例的实现方法

    这篇文章主要介绍了Android ImageView 固定宽高比例的实现方法的相关资料,,方法一:设置 adjustViewBounds="true",方法二:使用 Universal-Image-Loader 图片缓存类,需要注意的是方法二和方法一同时使用导致设置无效,需要的朋友可以参考下
    2017-07-07
  • Flutter组件适配方法实现详解

    Flutter组件适配方法实现详解

    在写flutter的代码的时候为了让组件大小适配屏幕使用了flutter_screenUtil插件。在调试的时候是正常的,可以适配屏幕。但是打包之后就会失去效果,这篇文章主要介绍了Flutter组件适配方法实现
    2022-10-10
  • Android设置theme中可能遇到的坑

    Android设置theme中可能遇到的坑

    Theme是一套UI控件和Activity的样式,下面这篇文章主要给大家介绍了关于Android设置theme中可能遇到的坑的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • Android仿微信布局的实现示例

    Android仿微信布局的实现示例

    本文主要介绍了Android仿微信布局的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Android编程设计模式之中介者模式详解

    Android编程设计模式之中介者模式详解

    这篇文章主要介绍了Android编程设计模式之中介者模式,结合实例形式详细分析了Android中介者模式的概念、原理、使用场景、用法及相关操作注意事项,需要的朋友可以参考下
    2017-12-12
  • Android布局技巧之创建高效布局

    Android布局技巧之创建高效布局

    这篇文章主要为大家详细介绍了Android布局技巧之创建高效布局,具有一定的实用性,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 解决Android Studio 代码自动提示突然失效的问题

    解决Android Studio 代码自动提示突然失效的问题

    这篇文章主要介绍了解决Android Studio 代码自动提示突然失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android无限循环RecyclerView的完美实现方案

    Android无限循环RecyclerView的完美实现方案

    这篇文章主要介绍了Android无限循环RecyclerView的完美实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 搭建mac使用Charles抓包安卓app环境配置过程

    搭建mac使用Charles抓包安卓app环境配置过程

    这篇文章主要为大家介绍了mac使用Charles抓包,安卓app环境搭建的配置过程步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02

最新评论