django中上传图片及图片显示问题

zshun1621 2012-05-30 07:16:33
程序可以上传头像,但是不能显示图片,显示的时候就是打个叉叉在那,我的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}}

...全文
560 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cliffbaby 2012-05-31
  • 打赏
  • 举报
回复
这可是 python 代码,你不用<code>包围下,看起来很累!
zshun1621 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这可是 python 代码,你不用<code>包围下,看起来很累!
[/Quote]刚才没看到回复....晕死!以后发帖注意了~
zshun1621 2012-05-31
  • 打赏
  • 举报
回复
没人额,自己解决了!问题出在urls.py 需要在那里指向MEDIA_ROOT!具体可参考http://hi.baidu.com/%BE%CD%D5%E2%B8%F6%C1%CB/blog/item/face1851c08f6a38377abee9.html

37,716

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧