Python 图片未保存在媒体文件夹中

Python 图片未保存在媒体文件夹中,python,html,django,Python,Html,Django,我注意到,当我上传个人资料图片时,图片没有保存在我的媒体目录中 我已经手动创建了文件夹,并在settings.py中引用了它 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') URL.py: if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpa

我注意到,当我上传个人资料图片时,图片没有保存在我的媒体目录中

我已经手动创建了文件夹,并在settings.py中引用了它

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
URL.py:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, 
document\u root=settings.MEDIA\u root)

models.py:

class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)
...
class Mentor(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
    linkedin = models.URLField(max_length=200,null=True,blank=True)
    photo = models.ImageField(null=True, blank=True, upload_to='media')
forms.py

#basic form
class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('first_name','last_name','email')

# edit mentor profile
class MentorProfileForm(forms.ModelForm):
    class Meta:
        model = Mentor
        fields = ('photo',)
和views.py:

def edit_user(request):
    user = request.user
    # form = MentorProfileForm(instance=user)
    if request.method == 'POST':
        form = UserForm(request.POST, request.FILES, instance=user)
        mentorform = MentorProfileForm(request.POST, request.FILES, instance=user)
        if form.is_valid() and mentorform.is_valid():
            form.save()
            mentorform.save()
            messages.success(request, ('Your profile was successfully updated!'))
            return HttpResponseRedirect('%s' % (reverse('teachers:edit_user')))
        else:
            messages.error(request, ('Please correct the error below.'))
    else:
        form = UserForm(request.POST, instance=user)
        mentorform = MentorProfileForm(request.POST, request.FILES, instance=user)
    return render(request, 'classroom/teachers/app-instructor-profile.html', {'form': form,
                                                                              'mentor_form': mentorform})
编辑

根据要求,这里是我用来上传图片和其他个人资料信息的html模板。我确信问题在于我的html。我不确定我还能做错什么

<form id="edit-mentor-profile" class="form-horizontal" method="post" enctype="multipart/form-data">
                        {% csrf_token %}
                      <div class="form-group">
                        <label for="photo" class="col-sm-2 control-label">Avatar</label>
                        <div class="col-md-6">
                          <div class="media v-middle">
                            <div class="media-left">
                              <div class="icon-block width-100 bg-grey-100">
                                  <img id="image" style="width:99%;height:99%;">
                              </div>
                            </div>
                            <div class="media-body">
                                <input type="file" id="files" class="btn btn-white btn-sm paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated/>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <label for="inputEmail3" class="col-md-2 control-label">Full Name</label>
                        <div class="col-md-8">
                          <div class="row">
                            <div class="col-md-6">
                              <div class="form-control-material">
                                {{ form.first_name }}
                                <label for="edit-mentor-profile-first_name"></label>
                              </div>
                            </div>
                            <div class="col-md-6">
                              <div class="form-control-material">
                                {{ form.last_name }}
                                <label for="edit-mentor-profile-last_name"></label>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <label for="email" class="col-md-2 control-label">Email</label>
                        <div class="col-md-6">
                          <div class="form-control-material">
                            <div class="input-group">
                              <span class="input-group-addon"><i class="fa fa-envelope"></i></span>
                              {{ form.email }}
                              <label for="edit-mentor-profile-email"></label>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="form-group">
                        <div class="col-md-offset-2 col-md-6">
                          <div class="checkbox checkbox-success">
                            <input id="checkbox3" type="checkbox" checked="">
                            <label for="checkbox3">Subscribe to our Newsletter</label>
                          </div>
                        </div>
                      </div>
                      <div class="form-group margin-none">
                        <div class="col-md-offset-2 col-md-10">
                          <button type="submit" class="btn btn-primary paper-shadow relative" data-z="0.5" data-hover-z="1" data-animated>Save Changes</button>
                        </div>
                      </div>
                    </form>

{%csrf_令牌%}
阿凡达
全名
{{form.first_name}
{{form.last_name}
电子邮件
{{form.email}
订阅我们的时事通讯
保存更改

正如@schwobasegll所说,文件应该存储在
/media/media
文件夹中。但代码中还有一个问题,如下所示:

mentorform = MentorProfileForm(request.POST, request.FILES, instance=user)  # <-- Here
因为
MentorProfileForm
使用的是
Mentor
模型,而不是
User
模型。您还需要修复处理
GET
请求的代码:

def edit_user(request):
    user = request.user
    # form = MentorProfileForm(instance=user)
    if request.method == 'POST':
        form = UserForm(request.POST, request.FILES, instance=user)
        mentorform = MentorProfileForm(request.POST, request.FILES, instance=user.mentor)
        if form.is_valid() and mentorform.is_valid():
            form.save()
            mentorform.save()
            messages.success(request, ('Your profile was successfully updated!'))
            return HttpResponseRedirect('%s' % (reverse('teachers:edit_user')))
        else:
            messages.error(request, ('Please correct the error below.'))
    else:
        form = UserForm(instance=user)  # <-- Here
        mentorform = MentorProfileForm(instance=user.mentor) # <-- Here
    return render(request, 'classroom/teachers/app-instructor-profile.html', {'form': form,
def edit_用户(请求):
user=request.user
#表单=导师档案表单(实例=用户)
如果request.method==“POST”:
form=UserForm(request.POST,request.FILES,instance=user)
mentorform=MentorProfileForm(request.POST,request.FILES,instance=user.mentor)
如果form.is\u valid()和form.is\u valid():
form.save()
保存()
messages.success(请求('Your profile was successfully update!'))
返回HttpResponseRedirect(“%s%”(反向(“教师:编辑用户”))
其他:
messages.error(请求('请更正下面的错误'))
其他:

form=UserForm(instance=user)#请在html模板中使用以下代码。使用表单标记的位置

<form enctype="multipart/form-data" method="post">
 ---------        --------
 ---------Your code-------

 </form>

---------        --------
---------你的代码-------

第一眼看到您的代码时,图像应该在
媒体/media/
中。
upload\u to
指定了媒体根目录中的路径。@schwobasegll谢谢,我已经尝试过了,当我尝试上传照片时,照片仍然没有保存到文件夹中。你能显示你的照片吗template@VaibhavMishra我已将其添加到我的问题中谢谢,当我上传itI后,文件仍然没有保存我将模板添加到问题中,我已经在我的表单中有了这个标记,我们在模板中使用了MentorProfileForm。是的,刚刚注意到,请告诉我如何使用。我仍然想显示即将上传的图片预览
<form enctype="multipart/form-data" method="post">
 ---------        --------
 ---------Your code-------

 </form>