zoukankan      html  css  js  c++  java
  • Django static静态配置文件

    对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件。为了使Django开发环境能够处理静态文件,Django有和生产环境不同的静态文件配置方式。

    Django 版本:1.10

    开发(Dev)环境配置

    一、STATIC_URL, STATICFILES_DIRS, STATIC_ROOT
    1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等
    2. 确保settings.py中的INSTALLED_APPS中包含django.contrib.staticfiles,以及Debug为True
    3. 设置settings.py中的STATIC_URL的值为“/static/”,作用参考5
    4. 在模版开头{% load static %}之后,在模版中使用{{ STATIC_URL }}作为静态文件路径前缀。比如css文件your_app/static/css/bootstrap.min.css,那么应用代码为<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
    5. 可以测试单独通过url访问静态文件(http://127.0.0.1:8000/static/css/bootstrap.min.css)

    6. STATICFILES_DIRS用来配置一些额外的静态文件的地址,如下配置。模版中访问的时候,参考4即可。

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
        '/var/www/static/',
    ]

    7. STATIC_ROOT, 设置绝对路径, 在collectstatic运行的时候会把静态文件拷贝到这个目录中,其更多的作用是在从开发环境到生产环节过程中移植静态文件。

     

    二、MEDIA_ROOT和MEDIA_URL
    MEDIA_ROOT:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义MEDIA_ROOT='/Users/xxx/media/',那么File=models.FileField(upload_to="app01/pic"),上传的文件就会被保存到'/Users/xxx/media/app01/pic'
    MEDIA_URL:URL的映射,前后要加上‘/’ 表示从根目录开始,比如“/site_media/”,加上这个属性之后,静态文件的链接前面会加上这个值。

    1. 在settings文件中设置MEDIA_URL,比如MEDIA_URL='/media/'

    2. 在settings文件中设置MEDIA_ROOT,可以是任意位置(不与STATIC_ROOT相同),用于保存上传的文件

    3. urls文件中配置如下,

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    4. 在settings文件中,TEMPLATES中'context_processors'下面新增'django.template.context_processors.media'

    配置好后可以使用浏览器访问上传的文件, http://ip:port/MEDIA_URL/upload_path/file. 比如MEDIA_URL设置的是'/media/',MEDIA_ROOT设置的是'/User/xxx/',在models中设置的文件上传到(upload_to=)'app01/pic',那么文件上传后实际存储地址为/User/xxx/app01/pic. 通过URL访问的话:http://ip:port/media/app01/pic/test.jpg. 在前端模版中访问这个上传的图片: <img src="{{ MEDIA_URL }}app01/pic/test.jpg"">

    更多参考官方文档

    生产环节部署

    在部署阶段最大的不同在于你必须让web服务器来处理静态文件,因此你必须在web服务器中配置,以便能让web服务器能访问静态文件。官方文档参考这里。后面会在自己试验过后补充自己的备注。

  • 相关阅读:
    挖地雷
    图的遍历
    数字三角形
    小凯的数字
    开心的金明
    ACM Training DAY 1
    ACM模板大整理
    [Java程序设计基础] Day 1 实验课 Java的环境配置与Java数组
    #寒假集训[20200113]
    #寒假集训[20200112]
  • 原文地址:https://www.cnblogs.com/cedrelaliu/p/6122726.html
Copyright © 2011-2022 走看看