Django 静态文件和媒体文件配置

Django 静态文件和媒体文件配置

python manage.py runserver 80DEBUG=Ture时候才加载静态文件,False不加载静态文件。

在部署时设置DEBUG=False才加载静态文件

settings文件设置如下:

STATIC_ROOT = 'assets'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

# 上传媒体文件
MEDIA_ROOT = 'media'  # 项目下的目录
MEDIA_URL = "/media/"  # 跟STATIC_URL类似,指定用户可以通过这个url找到文件

models中设置上传字段:

class UserProfile(models.Model):
    username = models.ForeignKey(User, related_name='User_Profiles', on_delete=models.CASCADE)
    avatar = models.FileField(upload_to='avatar', blank=True,null=True, verbose_name='头像')

数据库中保存结果:avatar/12.png,存放在media/avatar/12.png

模板中引用:

现在settings中设置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                '这里省略了,下面这个才是重要的',
                'django.template.context_processors.media',
            ],
        },
    },
]

在URL.py中的配置

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 这里是你的URL

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在模板中引用:

<img src="{{ MEDIA_URL }}{{ user.User_Profiles.first.avatar }}" alt="{{ user.username }}" class="w-100 rounded">
posted @ 2020-03-11 21:34  Neroi  阅读(299)  评论(0)    收藏  举报