django2.2 DEBUG=True/False时如何设置静态文件(image js css等)

目录结构:

project
----templates
----app
----manage.py

添加静态资源,目录结构更新为:

project
----templates
----app
----static  # 静态资源
--------img
--------js
--------css
----manage.py

以img举例,引用资源的代码为:

{% load static %}
<img src='{% static "img/favicon.png" %}'/>

DEBUG = True

django会自动调用django.views.static.serve()来自动找。

settings.py中指定STATICFILES_DIRS即可:

# settings.py
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'app/static/')
]

DEBUG = False

django不会自动找了,需要手动添加。

  1. settings.py中指定STATIC_ROOT

    # settings.py
    STATIC_URL = '/static/'
    
    STATIC_ROOT = 'static'  # project根目录下
    
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'app/static/')
    ]
  2. urls.py中手动调django.views.static.serve()
    from django.views.static import serve
    urlpatterns = [
        url(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT})
    ]
  3. 此时访问还是会发现404,因为STATIC_ROOT是在deploy时,统一存放静态资源的目录,此时这个目录根本就没有文件,需要手动执行collectstatic来拷贝文件。
    python manage.py collectstatic

    遇到重复文件,会有错误提示:

    This will overwrite existing files!
    Are you sure you want to do this?
    
    Type 'yes' to continue, or 'no' to cancel:

以上就总结了DEBUG=True/False时设置静态文件的方法。

觉得有用的同学可以顺手关注下或点个赞哦!

参考文档:

django.contrib.staticfiles.views.serve: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#django.contrib.staticfiles.views.serve

Managing static files: https://docs.djangoproject.com/en/dev/howto/static-files/

Deploying static files: https://docs.djangoproject.com/en/dev/howto/static-files/deployment/

collectstatic: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#django-admin-collectstatic

版权申明:本文为博主原创文章,转载请保留原文链接及作者。

原文地址:https://www.cnblogs.com/df888/p/12177468.html

时间: 2025-01-06 23:22:20

django2.2 DEBUG=True/False时如何设置静态文件(image js css等)的相关文章

开发Java web时让Eclipse支持编写HTML/JS/CSS/JSP页面的自动提示

平时用eclipse开发jsp页面时智能提示效果不太理想,其实eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava   点击apply按钮 如图: 2.继续打开JavaScript→

django 设置静态文件,static

一.搜集静态文件 1.1 命令行查看 collectstatic guoguos-MacBook-Pro:mysite guoguo$ python manage.py -h [staticfiles] collectstatic findstatic runserver 1.2 执行 python manage.py collectstatic 收集信息 guoguos-MacBook-Pro:mysite guoguo$ python manage.py collectstatic You

MySQL5使用Innodb引擎时如何设置数据文件按表存储

在Innodb引擎中,数据库的表可以共享存储空间也可以按表单独存储,共享存储空间虽然看起来简洁干净,但是从管理和运维的角度的看这种方式不可取.首先在同一个MySQL服务器下得不通数据库的表都会被存放于一个文件中,这个文件不会以为数据库某个表或者某些数据的删除二进行收缩,当数据库很多并且插入操作频繁的情况下,共享存储文件会增长的很快很大.如果数据库要做迁移,架构比较简单,但是存储于共享空间的中的数据就不太容易分离出来. 如果使用按表单独存储则可以很好的解决上述问题,遗憾的是MySQL5中使用Inn

vm采用NAT方式连接时,设置静态ip

一,共享无线连接或本地连接,给VMnet8. 在网络配置中,选着无线连接,右键属性,共享. 这里默认给虚拟网卡VMnet8,分配了IP:192.168.137.1. 二,在VMware中配置VMnet8 1)编辑 > 虚拟网络编辑器.选择VMnet8.配置子网IP:192.168.101.0.去掉使用DHCP服务 2)可以看到虚拟网卡VMnet8的IP变成了192.168.101.1. 3)查看网关.编辑 > 虚拟网络编辑器 > 选择VMnet8 > Nat设置.可以看到网关的IP

Nestjs 设置静态文件,public

Docs: https://docs.nestjs.com/techniques/mvc main.js import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { join } from 'path' async function bootstrap() { const app = await NestFactory.create(AppModule); app.u

Android Webview 加载外部html时选择加载本地的js,css等资源文件

在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片等资源会比较大,如果直接从网络加载会导致页面加载的比较慢,而且会消耗比较多的流量.所以这些文件应该放在assets里面同app打包. 要解决这个问题需要用到API 11(HONEYCOMB)提供的shouldInterceptRequest(WebView view, String url) 函数来加载本地资源.在API 21又将这个方法弃用了,是重载一个新的shouldInterceptRequest,

转:Android Webview 加载外部html时选择加载本地的js,css等资源文件

原文地址:http://m.blog.csdn.net/blog/qduningning/43196819 在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片等资源会比较大,如果直接从网络加载会导致页面加载的比较慢,而且会消耗比较多的流量.所以这些文件应该放在assets里面同app打包. 要解决这个问题需要用到API 11(HONEYCOMB)提供的shouldInterceptRequest(WebView view, String url) 函数来

nginx访问日志配置+日志切割+不记录静态文件日志+设置静态文件过期时间

nginx访问日志 查看nginx.conf文件 vim /usr/local/nginx/conf/nginx.conf 中间有一行是定义log的格式 log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$http_user_agent"';

使用Maven + Jetty时,如何不锁定js css 静态资源

Jetty会使用内存映射文件来缓存静态文件,包括js,css文件. 在Windows下,使用内存映射文件会导致文件被锁定,所以当Jetty启动的时候无法在编辑器对js或者css文件进行编辑. 解决办法是更改Jetty默认配置,不适用内存映射文件来做缓存. 解决步骤如下: 1. 找到webdefault.xml, 我以6.x版本为例,jetty-6.jar在mavenrepo/org/mortbay/jetty/jetty/6.x/jetty-6.x.jar, webdefault.xml文件在包