如何解决带有 Ajax 的 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 配合使用,但我还想添加一条消息,说明该产品已添加到购物车中,而无需刷新页面。
这是我的代码:
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)
base.html 中的 java 脚本:
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 %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。