程序可以上传头像,但是不能显示图片,显示的时候就是打个叉叉在那,我的settings.py里
MEDIA_ROOT = "C:/python27/Scripts/op/messages/media"
MEDIA_URL = "http:127.0.0.1:8000"
最后显示的时候我看了下页面里图像的源码:'http://127.0.0.1:8000/media/2012/05/30/%E6%9C%AA%E5%91%BD%E5%90%8D.jpg 但是显示的叉叉! 以下是我的代码,不知道到底是哪里出错了?先谢过了!
models.py:
class UserProfile(models.Model):
#用户姓名
user = models.ForeignKey(User,related_name="profile")
#用户昵称
usermail = models.EmailField()
#用户头像
photo = models.ImageField(upload_to="media/%Y/%m/%d",blank=True,null=True) #用户性别
GENDER_CHOICES =(
(u'M',u'Male'),
(u'F',u'Female'),
)
gender = models.CharField(max_length=2,choices=GENDER_CHOICES)
#用户个性签名
signature = models.TextField(max_length=100)
#用户tag
#tag = models.ManyToManyField(Tag)
#用户居住地
#location = models.CharField(max_length=50)
#生日
birthday = models.DateField(null=True,max_length=20)
def __unicode__(self):
return "%s" %(self.user)
forms.py:
个人资料form的定义
class UserProfileForm(forms.ModelForm):
GENDER_CHOICES =(
(u'M',u'Male'),
(u'F',u'Female'),
)
gender = forms.ChoiceField(label=u'性别',choices=GENDER_CHOICES,
widget=forms.RadioSelect())
birthday = forms.DateField(required=True,widget=SelectDateWidget(years=range(1920,2030)),label='生日')
signature = forms.CharField(label=u'个性签名',widget=forms.Textarea({'size':10000}))
photo = forms.ImageField(label=u'上传你喜欢的头像')
class Meta:
model = UserProfile
exclude = ['user','usermail',]
views.py:
创建资料
@csrf_exempt
@login_required
def create_profile(request):
form = UserProfileForm(request.POST,request.FILES)
if request.method == 'POST' and form.is_valid():
info = UserProfile.objects.create(
gender = form.cleaned_data['gender'],
birthday = form.cleaned_data['birthday'],
signature = form.cleaned_data['signature'],
photo = form.cleaned_data['photo'],
user = request.user,
)
info.save()
return HttpResponseRedirect('/')
个人资料显示:
@login_required
def myprofile(request,public_profile_field=None,
template_name='myprofile.html',extra_context=None):
try:
profile_obj = request.user.get_profile()
except ObjectDoesNotExist:
return HttpResponseRedirect('/accounts/create_profile')
if public_profile_field is not None and not getattr(profile_obj,public_profile_field):
profile_obj = None
if extra_context is None:
extra_context = {}
context = RequestContext(request)
for key,value in extra_context.items():
context[key] = callable(value) and value() or value
return render_to_response(template_name,{'profile':profile_obj},
context_instance=context)
模板中显示:
photo的显示用的是{{profile.photo.url}}