我正在尝试使用。
从我的模型中加载图像表单字段
image_id = forms.CharField(widget=forms.HiddenInput(), required=False)
image = forms.FileField(label = 'Select a Profile Image')
效用
def get_user(self):
users = User.objects.all()
data ={'users':users}
return data
视图
template_name= '/profile.html'
def get(self,request, *args, **kwargs):
data = self.get_context_data(*args, **kwargs)
data.update({'user_detail':self.get_user(request.user)})
return self.render_to_response(data)
设置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
模板
<center>
<img src="{{user_detail.profile_image.image}}" height="150px" width="150px">
</center>
我没有在页面上获取图像。
答案 0 :(得分:0)
媒体文件(用户上传的文件)和静态文件(网站使用的图片,css,js)都应该由Apache,Nginx等Web服务器提供服务。
Django在这里没有任何魔力,你有责任正确配置你的网络服务器来提供这些文件。
例如,假设你已经像这样配置了Django:
STATIC_URL = '/static'
STATIC_ROOT = '/var/www/mywebsite/static'
MEDIA_URL = '/media'
MEDIA_ROOT = '/var/www/mywebsite/media'
您应该已经配置了一个Web服务器来提供* _URL变量标识的URL中那些* _ROOT目录中的文件。在Apache中,您可以使用以下两个指令:
Alias /media /var/www/mywebsite/media
Alias /static /var/www/mywebsite/static
如果没有网络服务器为媒体和静态文件工作,浏览器就无法访问这些文件。
如果要上传的文件是图片,我建议使用ImageField代替FileField。
然后在模板中你可以写这样的东西来获得图像的完整网址:
<img src="{{user_detail.profile_image.image.url}}" height="150px" width="150px">