簡體   English   中英

django-crispy-forms如何保存圖像

[英]django-crispy-forms how to save an Image

我正在嘗試使用django-crispy-forms保存圖像。 每次嘗試保存時都顯示“ None”。 為了保存圖像,是否對crispy_forms有特殊的警告?

這是我的forms.py:

class Edit_Profile(forms.ModelForm):

    class Meta:
        model = MyUser  
        fields = ('display_name', 'real_name', 'email', 'location', 'picture',)

    helper = FormHelper()
    helper.form_method = 'POST'
    helper.form_class = 'form-horizontal'
    helper.label_class = 'col-lg-2'
    helper.field_class = 'col-lg-8'
    helper.layout = Layout(
        Fieldset(
            '', 'display_name', 'real_name', 'email', 'location', 'picture',
        ),
        Div(
            Submit('submit', 'Submit', css_class='btn-primary'),
            css_class='col-lg-offset-2',
        )
    )

    def update_info(self, user, myuser):
        """ get the user, and update info """
        cd = self.cleaned_data
        print(cd)
        myuser = MyUser.objects.get(user=user)
        try:
            myuser.display_name = cd['display_name']
            myuser.real_name = cd['real_name']
            myuser.location = cd['location']
            myuser.picture = cd['picture']
            myuser.save()
            user.email = cd['email']
            user.save()
        except:
            raise forms.ValidationError("Unable to update profile")

還有我的views.py:

@login_required(login_url=reverse_lazy('core:login'))
def edit_profile(request, username):
    myuser=MyUser.objects.get(user=request.user)
    info = profile_info(user=request.user, myuser=myuser)
    if request.method == 'POST':
        form = Edit_Profile(request.POST)
        if form.is_valid():
            print(form.cleaned_data['picture'])
            form.update_info(user=request.user, myuser=myuser)
            messages.info(request, 'Profile updated')
            return HttpResponseRedirect(reverse('core:profile', 
                kwargs={'username': request.user.username}))
        else:
            messages.warning(request, 'Unable to update profile')
            return HttpResponseRedirect(reverse('core:profile', 
                kwargs={'username': request.user.username}))
    else:
        form = Edit_Profile(initial=profile_data(user=request.user, myuser=myuser))
    return render(request, 'core/edit_profile.html', {'form': form})

在Django中上傳的文件位於request.FILES ,因此:

if request.method == 'POST':
    form = Edit_Profile(request.POST, request.FILES)

請注意,您的<form>需要enctype="multipart/form-data" ,否則request.FILES將是一個空對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM