Django静态文件与用户上传文件配置

网站使用静态文件路径配置

1. html文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "template")],  # template文件夹位置
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

  

2. css、js、img等static文件

在setting.py文件中

STATIC_URL = '/static/'  # 接口前缀跟静态文件夹的名字一点关系都没有, 可以按需求设置名字, 默认情况下这个前缀跟静态文件名字一样
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),  # 就是你的静态文件夹路径
os.path.join(BASE_DIR, 'static1'), # 可以配置多个静态文件路径
os.path.join(BASE_DIT, 'static2') # 会依次查找列表中所有的静态文件路径, 找到的话立刻停止, 都没有找到返回404 ]

手动创见static文件夹

使用

<link rel='stylesheet' href='/static/bootstrap-3.3.7-dist/css/bootstrap.min.css'>
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

 

 

用户上传文件路径配置

在setting.py文件中

MEDIA_URL = '/media/'  # 访问上传文件的路径
MEDIA_ROOT = os.path.join(BASE_DIR,'media') # 用户上传的文件会自动存放到该文件夹并且该文件夹不要你手动创建

手动配置路由

from django.views.static import serve
from django.conf import settings

# 手动配置media文件路径
urlpatterns = [
    url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})
]

 

 

在models.py文件中

 # 该字段会将接受到的文件自动存放到avatar文件夹下,只存该文件的路径,比如: avatar/111.png
 avatar = models.FileField(upload_to='avatar/', default='avatar/default.png')

 

上述配置配置完之后后端会将media问价夹所有的资源暴露给用户

<img class="media-object" src="/media/{{ article.blog.userinfo.avatar }}" alt="..." width="60">

配置中间件可以使用{{ MEDIA_URL }}

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media'  # 1.10版本就是这个media模块  1.9版本是django.core.context_processors.media
            ],
        },
    },
]
<img class="media-object" src="{{ MEDIA_URL }}{{ article.blog.userinfo.avatar }}" alt="..." width="60">
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FBI warining!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
基于该方法,你可以做到任意暴露后端任何资源给用户
在作死的边缘试探
MEDIA_ROOT = os.path.join(BASE_DIR,'app01') # 用户上传的文件会自动存放到该文件夹并且该文件夹不要你手动创建

url(r'^app01/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT})
上述配置会将后端逻辑代码数据库代码全部暴露给用户,慎重使用
posted @ 2019-06-23 21:53  yyfgrd  阅读(482)  评论(0)    收藏  举报