[英]Django using {{ MEDIA_URL }} in template with HttpResponse
我正在尝试在模板标签中使用{{MEDIA_URL}}。 这是我的html代码:
<li data-ng-repeat="image in pictures[currentCat]">
<a>
<img src="{{ MEDIA_URL }}{$ image.imgs $}" />
</a>
</li>
我正在将json发送到js并在AngularJS中使用它
$http.get("imagelist/").success(function(data) {
$scope.pictures=data;
});
我已经将这部分添加到我的setting.py
:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.media",
)
现在这个答案建议这样做
from django.template.context import RequestContext context = {'latest': p} render_to_response('Question/latest.html', context_instance=RequestContext(request, context))
但是我正在使用HttpResponse
,它不适用于我的代码。
def getimagelist(request):
dictionaries=[]
for cat in Category.objects.all():
dictionary=[obj.as_json() for obj in Gallery.objects.filter(cat_id=cat.id)]
dictionaries.append(dictionary)
return HttpResponse(json.dumps(dictionaries), content_type='application/json')
我的问题是使用HttpResponse
时如何在代码中使用{{ MEDIA_URL }}
?
目前,它在我的html中显示为空白。 谢谢
原来我不需要这些。 由于我使用nginx处理我的网站,因此我只将媒体路径添加到nginx位置
location /media/ {
autoindex on;
alias mysitepath/media/;
}
并像这样更改了我的html代码
<img src="/media/{$ image.imgs $}" />
所以现在一切都很好
您没有在响应的上下文中传递MEDIA_URL变量。 您应该这样做:
from django.conf import settings
data = {'pictures': dictionaries, 'mediaUrl': settings.MEDIA_URL}
HttpResponse(json.dumps(data), content_type='application/json')
在您的角度代码中:
$http.get("imagelist/").success(function(data) {
$scope.pictures = data.pictures;
$scope.mediaUrl = data.mediaUrl;
});
并在您的模板中
<img src="{$ mediaUrl $}{$ image.imgs $}" />
这样,媒体网址就会从您的设置传递到您的Angular应用程序中,并加载到Angular模板中(尽管所有这些都可以使用更好的命名,但是您可以理解)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.