模型
class UserImages(models.Model):
image = models.ImageField(upload_to='images')
class Meta:
db_table = 'tb_images'
form表单
<form action="" method="post" enctype='multipart/form-data'>
{% csrf_token %}
{% for item in images %}
<img src="/media/{{ item.image }}" width="50px">
{% endfor %}
<p>选择图片:<input type="file" name="img"></p>
<p><input type="submit" value="提交"></p>
</form>
####settings配置自定义的media路径
# urls.py
from django.contrib import admin
from django.urls import path, include
from django.contrib.staticfiles.urls import static
from kickstarter.settings import MEDIA_ROOT, MEDIA_URL
urlpatterns = [
path('admin/', admin.site.urls),
path('user/', include(('user.urls', 'user'), namespace='user')),
]
urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)
# settings.py
# 在静态文件夹下添加媒体访问的地址
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
# 媒体文件夹
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
view
def icon(request):
if request.method == 'GET':
images = UserImages.objects.all()
return render(request, 'picture.html', {'images': images})
if request.method == 'POST':
icon = request.FILES.get('img')
# 将图片保存在media文件中,且存储的是相对路径
UserImages.objects.create(image=icon)
return HttpResponse('上传成功')