【问题标题】:Django image uploadingDjango图像上传
【发布时间】:2011-11-06 16:34:57
【问题描述】:

我在上传图片时遇到问题。目前,选择的图像文件不会复制到目标目录,并且该文件的路径不会添加到数据库中。

我在下面给出我的代码:

models.py:

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    avatar = models.ImageField(upload_to="avatar/")

form.py

class ProfileEditionForm(ModelForm):
    class Meta:
        model = UserProfile
        exclude = ('user')

view.py:

def index(request):
    if request.user.is_authenticated():
        user = User.objects.get(pk=request.user.id)

        if request.method == "POST":
            form = ProfileEditionForm(request.POST, request.FILES, instance=user)

            if form.is_valid():
                form.save()
                #return HttpResponseRedirect(reverse('profile_edit'))
        else:
            form = ProfileEditionForm(instance=user)

        return direct_to_template(request, 'profile_edit.html', { 'form' : form })
    else:
        return HttpResponseRedirect(reverse('main_page'))

提前感谢您的帮助。

【问题讨论】:

  • 是的。 MEDIA_ROOT = 'webroot'
  • 但也不是绝对的,应该是:/home/user/project/webroot
  • 这个/home/user/project来自哪里?
  • 你的项目在哪里? /path/to/project 如果在 linux windows 上:D:\path\to\project
  • 而且,我认为这条路径是正确的,因为该 webroot 目录中的 css 有效。那么……路径好吗?

标签: python django image upload


【解决方案1】:

https://docs.djangoproject.com/en/dev/topics/http/file-uploads/

您的表单应该有 enctype="multipart/form-data" 或 request.FILES 不会有任何关联的数据流

【讨论】:

  • 是的,我的表单有那个 enctype。
【解决方案2】:

您的 ModelForm 已绑定到 UserProfile 模型,但您正在使用 instance=user 对其进行实例化。

PS:request.user 是 User.objects.get(pk=request.user.id)

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2020-03-02
    • 2014-08-31
    • 1970-01-01
    • 2021-01-15
    • 2013-05-13
    相关资源
    最近更新 更多