为什么我的图像不是用我创建的django表单上传的?

时间:2016-09-13 21:12:59

标签: python django forms python-imaging-library pillow

我正在使用Python 2.7,Django 1.9。

我正在尝试使用此模型/表单对从用户处获取图像:

models.py

from PIL import Image
class UserProfile(models.Model):

    user = models.OneToOneField(User)

    website = models.URLField(blank=True, null=True)
    location = models.CharField(max_length=200, null=True)
    longitude = models.FloatField(null=True)
    latitude = models.FloatField(null=True)
    credit = models.FloatField(default=0, null=True)
    picture = models.ImageField(upload_to='media/images/profile_pictures', blank=True, null=True)

    def __unicode__(self):
        return self.user.username

forms.py

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = [
            "website",
            "location",
            "picture",
        ]
        widgets = {
            'location': forms.TextInput(
                attrs={'id': 'location', 'class': 'geo', 'required': True, 'placeholder': 'location'}
            ),
        }

使用以下视图保存:

def register(request):
    registered = False
    if request.method == "POST":
        user_form = UserForm(request.POST)
        profile_form = UserProfileForm(request.POST, request.FILES)

        if user_form.is_valid() and profile_form.is_valid():
            print(request.POST['location'])
            print(str(request.POST['location']))
            user = user_form.save()                
            user.set_password(user.password)
            user.save()
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.save()
        else:
            print user_form.errors, profile_form.errors

    else:
        profile_form = UserProfileForm()
        user_form = UserForm()

    return render(request, "register.html", {'user_form' : user_form, 'profile_form' : profil

但执行时,没有图片保存到文件夹中。这是image_urls的根: 项目/静态/媒体/图像/ profile_pictures 有什么想法吗?

编辑:这是html:

{% load static from staticfiles %}
{% block head %}


{% endblock %}
{% block content %}


{% if registered %}
<h1>Thank you for registering.</h2><br>
<a href="dashboard">Start playing!</a>
{% else %}

<form id="user_form"  method="post" action="/register/" enctype="multipart/form-data">
  {% csrf_token %}
  {{ user_form.as_p }}
  {{ profile_form.as_p }}
  <input type="submit" name="submit" value="register" />

</form>

{% endif %}
{% endblock %}

1 个答案:

答案 0 :(得分:0)

我已升级到Pillow的最新版本,现在可以使用。