I have problems displaying my avatar image which I have uploaded from my forms page. The browser source code seem to say that it cannot find the correct path to my uploaded image file. Which file or files do I need to fix?
<h2>Profile</h2> <form action="/accounts/profile/" method="post" enctype="multipart/form-data"><input type='hidden' name='csrfmiddlewaretoken' value='BLJ8GGDTXihEvVCxPxynF1y2hzkjkjSi' /> <p><label for="id_likes_cheese">Likes cheese:</label> <input id="id_likes_cheese" name="likes_cheese" type="checkbox" /></p> <p><label for="id_favourite_hamster_name">Favourite hamster name:</label> <input id="id_favourite_hamster_name" maxlength="50" name="favourite_hamster_name" type="text" value="sylt2" /></p> <p><label for="id_avatar">Avatar:</label> Currently: <a href="1406895413_91_tumblr_m5xo9h5X3E1qgfdhto1_500.gif">1406895413_91_tumblr_m5xo9h5X3E1qgfdhto1_500.gif</a> <input id="avatar-clear_id" name="avatar-clear" type="checkbox" /> <label for="avatar-clear_id">Clear</label><br />Change: <input id="id_avatar" name="avatar" type="file" /></p> <p><img src='/static/userprofile/uploaded_files/Currently: <a href="1406895413_91_tumblr_m5xo9h5X3E1qgfdhto1_500.gif">1406895413_91_tumblr_m5xo9h5X3E1qgfdhto1_500.gif</a> <input id="avatar-clear_id" name="avatar-clear" type="checkbox" /> <label for="avatar-clear_id">Clear</label><br />Change: <input id="id_avatar" name="avatar" type="file" />' width="200" /></p> <input type="submit" name="submit" value="Update" /> </form>
models.py
from django.db import models
from django.contrib.auth.models import User
from time import time
#_______________________________________________________________________________
def get_upload_file_name(instance, filename):
return "%s_%s" % (str(time()).replace('.','_'), filename)
#_______________________________________________________________________________
class UserProfile(models.Model):
user = models.OneToOneField(User)
nickname = models.CharField(max_length=50)
likes_cheese = models.BooleanField(default=False)
favourite_hamster_name = models.CharField(max_length=50)
avatar = models.ImageField(upload_to=get_upload_file_name, blank=True, null=True)
def __unicode__(self):
return self.nickname
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
#_______________________________________________________________________________
views.py
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
from forms import UserProfileForm
from django.contrib.auth.decorators import login_required
#_______________________________________________________________________________
@login_required
def user_profile(request):
if request.method == 'POST':
form = UserProfileForm(request.POST, request.FILES, instance=request.user.profile)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/loggedin')
else:
user = request.user
profile = user.profile
form = UserProfileForm(instance=profile)
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('userprofile/profile.html', args)
#_______________________________________________________________________________
forms.py
from django import forms
from models import UserProfile
#_______________________________________________________________________________
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('likes_cheese', 'favourite_hamster_name', 'avatar')
#_______________________________________________________________________________
profile.html
{% extends "base_main.html" %}
{% block content %}
<h2>Profile</h2>
{% for field in form %}
{{ field.error }}
{% endfor %}
<form action="/accounts/profile/" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
{% if form.avatar %}
<p><img src='/static/userprofile/uploaded_files/{{form.avatar}}' width="200" /></p>
{% endif %}
{% comment %}
<p><img src='{{userprofile.avatar.url}}' width="200" /></p>
{% endcomment %}
<input type="submit" name="submit" value="Update" />
</form>
{% endblock %}
settings.py
MEDIA_ROOT = '/Desktop/Django/project1/userprofile/static/userprofile/uploaded_files/'
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
There are 2 static folders in my project1 are there any conflicting issues with my setup?
/Desktop/Django/project1/polls/static/polls/
/Desktop/Django/project1/userprofile/static/userprofile/uploaded_files/
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/956d71c5-63c5-481c-9388-dfecad14b516%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment