Django 静态文件和媒体文件配置
python manage.py runserver 80
在 DEBUG=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">