首页 > 解决方案 > 如何使用 ajax 在模态中显示 django 通用详细视图

问题描述

当用户单击公告列表时,我想在模式内显示公告的内容。

这将是我的announcement_list.html中模式的触发器:

<form name="form" action="#" id="form_have_product_{{y.id}}" method="POST">
    {% csrf_token %}
    <a href="#" id="{{ announcement.pk }}" type="button" class="btn btn-info view-announcement" data-url="{% url 'announcement-detail' pk=announcement.id %}" style="float: right;">View</a>
</form>

这是我在views.py中的功能:

def get_announcement(request, pk): 公告 = Announcement.objects.filter(announcement_id=pk)

context = {
    'title': announcement.title,
    'about': announcement.about,
    'author': announcement.author,
    'post_date': announcement.post_date
}

return render(request, 'announcement-details-modal.html', context)

对于urls.py

urlpatterns = [path('announcement/<int:pk>/', get_announcement, name='announcement-detail'),]

这是用户点击公告列表时的功能:

$(".view-announcement").on("click", function() {
var target_url = $(this).attr("data-url");
var csrftoken = $("[name=csrfmiddlewaretoken]").val();
  $.ajax({
    url: target_url,
    headers:{
        "X-CSRFToken": csrftoken
    },
    success: function(data) {
      $("#modal").modal("toggle");
      $("#modal-content").html(data);
    }
  });
});

目前,此代码返回服务器响应状态为 500(内部服务器错误)

标签: djangoajaxlistviewmodal-dialog

解决方案


推荐阅读