目录
一、启用media
1、URL设置
2、settings.py配置
二、url
三、upload.py 新增upload_modelform方法
四、form.py新增UpModelForm
五、创建city表
六、创建city_list.html
接上一篇《django项目实战十三(django+bootstrap实现增删改查)进阶混合数据form上传图片》
知识点:1、media启用
在 Django 的开发中有两个特殊的文件夹:
re_path(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'
这样设置之后,上一篇可以修改一下
def upload_modelform(request):"""modelform上传"""title = "ModelForm上传"if request.method == 'GET':form = UpModelForm()# print(form)return render(request, 'upload_form.html', {"form": form, "title": title})form = UpModelForm(data=request.POST, files=request.FILES)if form.is_valid():form.save()redirect('/city/list/')return render(request, 'upload_form.html', {"form": form, "title": "form上传"})
class UpModelForm(BootStrapModelForm):# img 字段不使用bootstrap样式bootstrap_exclude_fields = ['img']class Meta:model = models.Cityfields = "__all__"
class City(models.Model):"""城市"""name = models.CharField(verbose_name='名称', max_length=32)count = models.IntegerField(verbose_name='人口')# FileField本质上也是CharField,FileField自动保存数据img = models.FileField(verbose_name='LOGO', max_length=128, upload_to='city/')
{% extends 'layout.html' %}
{% block title %}城市列表
{% endblock %}
{% block content %}城市列表序号 LOGO 名称 人口 操作 {% for obj in query_set %}{{ obj.id }}
{ obj.img }}" style="height: 80px;">{{ obj.name }} {{ obj.count }} {% endfor %}
{{ page_string }}
{% endblock %}