最重要的:Django 要在开启 debug 模式才会加载静态文件,关闭 debug 情况下需要使用解析服务(个人使用 Apache)
运行环境: 系统:Windows10
Python:3.6
Django:2.0.2
Apache:2.4
问题: 在使用 Django 关闭 Debug 模式后,想生成一个 404 页面,涉及到静态文件加载的问题。
解决方法: 官方文档说明:
实际操作: 在 Django 里需要编写的: settings.py 文件中相关代码及说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/ STATIC_URL = '/static/' # STATIC_ROOT设置运行python manage.py collectstatic命令后存放所有搜集到的静态文件(包括各个app里静态文件)的目录,可以方便apache部署 STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static') # STATICFILES_DIRS设置一些存放公共静态文件的目录,不能和STATIC_ROOT的目录一样,也可以不写 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"), ) # 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件 # 注意有先后顺序,找到了就不再继续找了 STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
可以把静态文件放在 app 的 static 文件夹下,或者 STATICFILES_DIRS 目录中。 我的目录结构: 我把 common_static(公共静态文件夹)、collected_static(搜集的静态文件夹)放在项目目录下,把 static(app 的静态文件夹)放在 app 目录下
在 DEBUG = True 的情况下,使用 runserver 命令后,可以直接访问:static/movieWebSite/images/bg.jpg 来访问该图片。
同样,像官方文档里所说:
在 settings.py 文件中的 INSTALLED_APPS 项下一定要有 django.contrib.staticfiles。
在 HTML 中需要编写的: 1 2 {% load static %} <link rel="stylesheet" href="{% static 'movieWebSite/css/font-awesome.min.css' %}" media="all" />
最后,要部署到 Apache 上 先使用 python manage.py collectstatic 命令搜集静态文件,可以方便 apache 部署 在 httpd.conf 文件中,增加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <VirtualHost *:80> Alias /media/ /path/to/media/ #此为meida文件的设置,可以注释掉 Alias /static/ collected_static目录的位置 #(eg:D:/allFile/Python_Project/Web/Movie/collected_static/)<strong><span style="font-size:14px;">(<span style="color:#ff0000;">注意最后需要一个'/'</span>)</span></strong> <Directory /path/to/media> #此为media目录的设置,可以注释掉 Require all granted </Directory> <Directory collected_static目录的位置> #(eg:D:/allFile/Python_Project/Web/Movie/collected_static) Require all granted </Directory> WSGIScriptAlias / wsgi文件位置 #(eg:D:/allFile/Python_Project/Web/Movie/Movie/wsgi.py) <Directory wsgi文件所在目录位置> #(eg:D:/allFile/Python_Project/Web/Movie/Movie) <Files wsgi.py> Require all granted </Files> </Directory> </VirtualHost>
重启 Apache 服务器就 OK 了。
闲谈: 如果静态文件加载不出来,可以用 python manage.py findstatic (staticfile) 命令来查找静态文件位置是否放置正确。
其实发现官方文档才是最有用的。
本文标题: Django 配置静态文件
文章作者: jklf5
发布时间: 2020年02月18日 - 19:14
最后更新: 2020年02月19日 - 21:00
原始链接: https://jklf5.xyz/2020/02/18/Django配置静态文件/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。