画像の処理に django パッケージの sorl サムネイルを使用しています。
settings.py の構成は次のとおりです。
MEDIA_ROOT = '/home/hammad/virt_env/virt1/gccFishing/media'
MEDIA_URL = '/media/'
2 つのパスで画像をアップロードしました。問題は、最初のパスの画像がテンプレートにのみレンダリングされることです。
これは、うまく機能している私の最初のパスです。
/gccFishing/media/Images/
にアップロードされ、このコードでテンプレートにレンダリングされるユーザー プロフィール写真
{% サムネイル user.image "50x50" crop="center" as im %}
<img src="{{im.url}}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
これは、画像がアップロードされているがテンプレートにレンダリングされていない 2 番目のパスです。
- 画像のアップロードパスは
/gccFishing/media/Images/WallImages
. このコードを使用して、それらをテンプレートにレンダリングします。
{% サムネイル post.image "150x150" crop="center" as im %}
<img scr="{{im.url}}" width="{{im.width}}" height="{{im.height}}"></a>
{% endthumbnail %}
また、アクセスしようとすると{{post.image.url}}
次のエラーが表示されます。
The 'image' attribute has no file associated with it
何かご意見は ?
models.py
class Wallpost(models.Model):
author = models.ForeignKey(User)
posted_on = models.DateTimeField(auto_now_add = True)
points = models.IntegerField(default = 0, validators = [MaxValueValidator(100)]) # relate this to user reputation
#location
#spot
image = ImageField(upload_to = Imagepost_path, null = False, blank = True
)
ビュー.py
class Wallview(View):
def get(self, request, *args, **kwargs):
context = self.get_context_data()
return render_to_response('wall.html', context, RequestContext(request))
def post(self, request, *args, **kwargs):
image = request.FILES.get('image', None)
text = request.POST.get('text', None)
user = request.user
try:
wallpost = Wallpost.objects.create(text = text, image = image, author = user)
return HttpResponseRedirect('')
except:
return HttpResponse('You should login to post')
def get_context_data(self, **kwargs):
context = {}
try:
posts = Wallpost.objects.order_by('-posted_on')[:20]
except Wallpost.DoesNotExist:
posts = None
context['posts'] = posts
return context