Сообщения Django с Ajax
Я хочу, чтобы мои сообщения отображались без обновления с помощью Ajax. Хотя нашел похожий вопрос
Django - Как показывать сообщения с помощью функции ajax
но похоже, что это не работает (я следовал инструкциям из основного ответа). Я получаю сообщение об ошибке:
if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
AttributeError: 'RequestContext' object has no attribute 'META'
По сути, я добавляю в корзину продукт, который идеально работает с ajax, но я также хочу добавить сообщение о том, что продукт был добавлен в корзину без обновления страницы.
Это мой код:
views.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-скрипт в base.html:
function showPopupMessage(content) {
var elMessages = $('#popup-messages-content');
if (elMessages.length && content) {
elMessages.html(content);
}
}
messages.html
{% if messages %}
{% for message in messages %}
<li id="msg" {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
{% endif %}