models.py 的表中 头像图片文件字段
avatar = models.ImageField(verbose_name="头像", upload_to='users/%Y/%m/%d/',
max_length=128, null=True, blank=True)
上传文件图片
配置
# 上传文件图片的根路径
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
模板中上传
<form action="{% url 'users:usersRegister' %}"
method="POST"
enctype="multipart/form-data">
{% csrf_token %}
<!--其他字段的 input 省略,自行填充-->
<div class="form-group">
<label for="id_avatar">头像</label>
<input type="file" class="form-control" name="avatar" id="id_avatar">
</div>
<button type="submit" class="btn btn-default">注册</button>
</form>
前端展示使用文件图片(下载)
配置
settings 中配置
TEMPLATES = [{
'OPTIONS': {
'context_processors': [
'django.template.context_processors.media',
],
},
},
]
这样在前端可以使用 {{ MEDIA_URL }} 变量名, 来表示上传文件图片的根路径。
继续在 setting.py 中设置
访问文件的 URL
MEDIA_URL = '/media/'
项目根 RUL 中配置
from qfgp01site.settings import MEDIA_ROOT
from django.views.static import serve
urlpatterns = [
re_path(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),
]
模板中访问
<img src="{{ MEDIA_URL }}{{ request.user.avatar }}" alt="头像" class="img-circle naver">
上传文件图片的根路径
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
下载访问文件的URL
MEDIA_URL = '/media/'