使用Ajax的java Django消息
我希望我的消息不需要使用Ajax刷新就可以显示出来。虽然我发现了一个类似的问题
Django - How to show messages under ajax function
但它似乎不起作用(我遵循了主要答案中的说明)。我得到一个错误,说:
if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
AttributeError: 'RequestContext' object has no attribute 'META'
因此,基本上我正在向我的购物车添加一个产品,它可以完美地使用ajax,但我还想添加一条消息,表明该产品已添加到购物车中,而无需刷新页面
这是我的代码:
观点。py
class ItemDetailView(DetailView):
model = Product
template_name = "shop/product.html"
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
try:
data = cartData(self.request)
counterCartItems = data['counterCartItems']
cartItems = data['cartItems']
except:
counterCartItems = 0
context['counterCartItems'] = counterCartItems
categoryId = Category.objects.get(name=self.object.category.name)
recProducts = Product.objects.filter(category=categoryId)
context['recProducts'] = recProducts[:4]
return context
def render_to_json(request, data):
return HttpResponse(
json.dumps(data, ensure_ascii=False),
mimetype=request.is_ajax() and "application/json" or "text/html"
)
def addToCart(request):
...
data = {
'msg': render_to_string('shop/messages.html', {}, RequestContext(request)),
}
return render_to_json(request, data) # Sending an success response
return HttpResponse(order.get_cart_items)
基本的java脚本。html:
function showPopupMessage(content) {
var elMessages = $('#popup-messages-content');
if (elMessages.length && content) {
elMessages.html(content);
}
}
留言。html
{% if messages %}
{% for message in messages %}
<li id="msg" {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
{% endif %}
共 (0) 个答案