Django e-commerce part21 Django Messages
Displaying messages
公式サイト:
The messages framework | Django documentation | Django
base.html に挿入する。
include navbar の下あたりでいいと思われる。
{% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %}
views.pyを修正する。
このままだと、inventory のextra=1の新規登録フォームが空欄でエラーが出てしまうので、以下の通り修正してみる。
def post(self, request, *args, **kwargs): formset = VariationInventoryFormset(request.POST, request.FILES) if formset.is_valid(): formset.save(commit=False) for form in formset: new_item = form.save(commit=False) if new_item.title: #titleに何か入っているときは、以下の処理をする。 product_pk = self.kwargs.get("pk") product = get_object_or_404(Product, pk=product_pk) new_item.product = product new_item.save() messages.success(request, "在庫の状況が更新されました") return redirect("products") raise Http404
base.htmlのメッセージをbootstrap風に修正する。
{% if messages %} <div class='container'> <div class='alert alert-success text-center'> {% for message in messages %} <p{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</p><br/> {% endfor %} </div> </div> {% endif %}
base.htmlをさらに、修正する。
{% if messages %} <div class='container'> <div class='alert alert-success text-center alert-dismissible'> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> {% for message in messages %} <p{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</p><br/> {% endfor %} </div> </div> {% endif %}