I made a mistake in view.py.
Corrected version is
def handleUploadedFile(file):
destination = open('usermedia/new.jpg', 'wb+')
for chunk in file.chunks():
destination.write(chunk)
destination.close()
return destination
def user_profile(request, profile_name):
owner = get_object_or_404(User, username = profile_name)
ownersProfile =get_object_or_404(UserProfile, user = owner)
form = ProfileEdit(request.POST)
if request.method == 'POST':
if form.is_valid():
ownersProfile.about = form.cleaned_data['about']
ownersProfile.avatar = handleUploadedFile(request.FILES['file'])
ownersProfile.save()
return HttpResponseRedirect("/")
else:
form = ProfileEdit()
Also changed a little bit template:
<form method="post" action="./{{owner.username}}">
{{ form.as_p }}
<input type="submit" value="Upload" />
</form>
But I am getting:
MultiValueDictKeyError at /account/profile/test
"Key 'file' not found in <MultiValueDict: {}>"
:(
On Mon, Jun 15, 2009 at 6:54 AM, Oleg Oltar<[email protected]> wrote:
> Hi!
>
> I know that the problem probably was discussed many times already, but
> I really can't make it working.
>
> I read the documentation and prepared the following code:
>
> model:
>
> class UserProfile(models.Model):
> """
> User profile model, cintains a Foreign Key, which links it to the
> user profile.
> """
> about = models.TextField(blank=True)
> user = models.ForeignKey(User, unique=True)
> ranking = models.IntegerField(default = 1)
> avatar = models.ImageField(upload_to="usermedia", default =
> 'images/js.jpg')
>
>
> def __unicode__(self):
> return u"%s profile" %self.user
>
>
> form:
>
> class ProfileEdit(forms.Form):
> about = forms.CharField(label = 'About', max_length = 1000, required=False)
> avtar = forms.ImageField()
>
>
> view:
> def handleUploadedFile(file):
> destination = open('usermedia/new.jpg', 'wb+')
> for chunk in file.chunks():
> destination.write(chunk)
> destination.close()
> return True
>
> def user_profile(request, profile_name):
> owner = get_object_or_404(User, username = profile_name)
> ownersProfile =get_object_or_404(UserProfile, user = owner)
> form = ProfileEdit(request.POST)
> if request.method == 'POST':
> form = ProfileEdit(request.POST, request.FILES)
> if form.is_valid():
> handleUploadedFile(request.FILES['file'])
> else:
> form = ProfileEdit()
>
>
>
> data = RequestContext(request,
> {
> 'owner' : owner,
> 'ownersProfile' : ownersProfile,
> 'form' : form
> }
> )
> return render_to_response('registration/profile.html', data)
>
>
> And part of template:
>
> <form method="post" action=".">
> {{ form.as_p }}
> <input type="submit" value="Upload" />
> </form>
>
>
>
> After trying this code in browser I am getting a text field with
> browse button, so when I chose file to upload, and finally click
> upload I am getting 404 Error.
> Not sure what I might doing wrong.
> Please help
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---