Django创建视图图像上传

Dom*_*nic 3 python django image

我正在尝试通过ModelForm在CreateView中创建一个新对象.我想让'player'实例拥有一个图像.但上传的图像不会存储到'player_image'目录或写入DB.

这些是我的文件:

models.py:

class Player(models.Model):
    last_name = models.CharField(max_length=255, verbose_name=_("Last Name"))
    first_name = models.CharField(max_length=255, verbose_name=_("First Name"))
    secret_name = models.CharField(max_length=255, verbose_name=_("Secret Key"), unique=True)
    image = ImageField(upload_to='player_images/', verbose_name=_("Image"), null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

player_form.py

class PlayerForm(forms.ModelForm):
    last_name = forms.CharField(required=True, label=_("Last Name"))
    first_name = forms.CharField(required=True, label=_("First Name"))

    class Meta:
        model = Player
        fields = ['first_name', 'last_name', 'image']
Run Code Online (Sandbox Code Playgroud)

player_add_view.py

class PlayerAddView(LoginRequiredMixin, CreateView):
    form_class = PlayerForm
    template_name = "project/player_add_view.html"
    model = Player

def form_valid(self, form):
    player = form.save(commit=False)

    # I do other stuff here
    player.save()

    return HttpResponseRedirect(reverse('home'))
Run Code Online (Sandbox Code Playgroud)

She*_*ary 11

表单中的views.py或enctype ="multipart/form-data"中的request.FILES可能会丢失.

请看这里:https://docs.djangoproject.com/en/1.8/topics/http/file-uploads/

或者看到这个:https://godjango.com/35-upload-files/

  • 那个enctype的东西是ab *** h。谢谢。 (2认同)
  • 建立上面的评论......你进入你的模板并添加 <form method="post" enctype="multipart/form-data"> (2认同)

Ale*_*xis 8

转到您的模板并添加:

 <form method="post" enctype="multipart/form-data">
Run Code Online (Sandbox Code Playgroud)