Django 配置静态文件

最重要的:Django要在开启debug模式才会加载静态文件,关闭debug情况下需要使用解析服务(个人使用Apache)

这个问题卡了我两天

背景:

    环境:

    系统:Windows10

    Python:3.6

    Django:2.0.2

    Apache:2.4


    在使用Django关闭Debug模式后,想生成一个404页面,涉及到静态文件加载的问题。

    一开始就搜索:Django配置静态文件,很多文档都没有说要开启Debug才会加载静态文件这个问题,看官方文档的时候居然都没注意到。(贴上官方文档)

    

实战:

    在Django里需要编写的:

        settings.py文件中相关代码及说明:

# 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中需要编写的:

{% load static %}
<link rel="stylesheet" href="{% static 'movieWebSite/css/font-awesome.min.css' %}" media="all" />

   最后,要部署到Apache上

            先使用python manage.py collectstatic 命令搜集静态文件,可以方便apache部署

            在httpd.conf文件中,增加如下内容:

<VirtualHost *:80>
 
        Alias /media/ /path/to/media/               #此为meida文件的设置,可以注释掉
        Alias /static/ collected_static目录的位置    #(eg:D:/allFile/Python_Project/Web/Movie/collected_static/)注意最后需要一个'/'
 
        <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) 命令来查找静态文件位置是否放置正确。

        其实发现官方文档才是最有用的。

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值