Django表单提交时图片字段无法保存的问题求助
Django表单提交时图片字段无法保存的问题求助
大家好,我现在遇到一个Django表单的问题,想请教下各位:
我写的ModelForm在提交时,其他所有字段都能正常更新到数据库,唯独图片字段没有变化。我猜测可能是views.py里的request.FILES处理有问题,但不是100%确定。
补充个小细节:如果直接在Django后台上传图片,图片字段是能正常更新的,只有通过前端表单提交的时候才会出现这个问题。
下面是我的代码:
views.py
def account_view_myaccount_edit(request): user_profile = User_Info.objects.filter(user=request.user) instance = User_Info.objects.get(user=request.user) user = request.user if request.method == 'POST': form = HomeForm(request.POST, request.FILES, instance=instance) if form.is_valid(): listing_instance = form.save(commit=False) listing_instance.user = user listing_instance.save() return redirect('myaccount_edit') # Redirect to a success page else: form = HomeForm(instance=instance) context = { 'user_profile': user_profile, 'form': form } return render(request, 'myaccount_edit.html', context)
models.py
class User_Info(models.Model): id = models.IntegerField(primary_key=True, blank=True) image = models.ImageField(default='default.jpg', upload_to='profile_pics', null=True, blank=True) user = models.OneToOneField(settings.AUTH_USER_MODEL,blank=True, null=True, on_delete=models.CASCADE) name = models.CharField(max_length=100) address = models.CharField(max_length=100) city = models.CharField(max_length=100) state = models.CharField(max_length=100) zip_code = models.CharField(max_length=100) mobile_number = models.CharField(max_length=100, blank=True) class Meta: verbose_name_plural = "User Info"
forms.py
class HomeForm(forms.ModelForm): image = forms.ImageField(required=True, label=_("image"), widget=forms.TextInput(attrs={'type': 'file', 'id': 'upload-btn', 'accept': 'image/gif, image/jpg'})) name = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) address = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) city = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) state = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) zip_code = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) mobile_number = forms.CharField(required=True, label='', max_length=100, widget=forms.TextInput(attrs={'class': 'form-control info-details'})) class Meta: model = User_Info fields = ['name', 'address', 'city', 'state', 'zip_code', 'mobile_number', 'image']
myaccount_edit.html(前端表单模板)
<form action="" method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form.errors }} <p>Name</p> {{ form.name }} <p>Address</p> {{ form.address }} <p>City</p> {{ form.city }} <p>State</p> {{ form.state }} <p>Zip Code</p> {{ form.zip_code }} <p>Mobile Number</p> {{ form.mobile_number }} <p>Upload Profile Photo</p> {{ form.image }} <br/> <br /> <button class="btn btn-round btn-accept" type="submit" value="Submit"><i class="zmdi zmdi-favorite-outline6"></i>Submit</button> <br/> <a class="btn-cancel" href="{% url 'myaccount' %}">Cancel</a> </form>
base.html(显示头像的模板)
<div class="profile-image-side"> {% if user.is_authenticated %} {% for profile in user_profile %} <img src="{{ profile.image.url }}" > <p class="m-b-0">{{ user.username }}</p> {% endfor %} </div> </div>
我还附上了Django后台和前端显示数据的截图,希望能帮大家定位问题。
Any help is gladly appreciated. Thanks!
备注:内容来源于stack exchange,提问作者spidey677
相关产品推荐
相关产品推荐

