我正在使用从我的 django 视图传递上下文的 for 循环加载带有简要大学详细信息的引导卡。现在,我想显示一个包含更多详细信息的模式,具体取决于我按下的卡的按钮。我希望在不重新加载/刷新页面的情况下显示此动态数据。
这是我的 views.py
from django.shortcuts import get_object_or_404
from django.http import JsonResponse
from university.models import University
def dispUni(request):
# hoping to retrieve university.id from the clicked button
uniPK = request.GET.get('universityId')
uniDetails = {
'university': get_object_or_404(University, id=uniPK)
}
return JsonResponse(uniDetails)
这是我的 urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.dispUni, name='uniDetails')
]
这是我的 html 页面,我想在其中显示此信息
<div class="container-fluid d-flex justify-content-center">
<!-- display Universities -->
<div class="row mt-5">
{% if universities %}
{% for university in universities %}
<div class="card mx-4 uniCard" style="width: 20rem;">
<img src="{{university.photo_main.url}}" class="card-img-top" alt="{{university.title}}">
<div class="card-body">
<h5 class="card-title Dark-shades-text">{{university.title}}</h5>
<p class="card-text">
<i class="fas fa-map-marked-alt"></i> {{university.city}}, {{university.state}} <br>
<i class="fas fa-phone"></i> {{university.phone_number}}
</p>
<!-- Button trigger modal -->
<button type="button" value="{{university.id}}" id="btn-UniModal{{university.id}}" class="btn main-color" data-toggle="modal" data-target="#UniDetails">
View Details
</button>
</div>
</div>
{% endfor %}
{% endif %}
</div>
</div>
<!-- Modal for University Details -->
<div class="modal fade" id="UniDetails" tabindex="-1" role="dialog" aria-labelledby="UniInformation" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="UniModalTitle"><!-- Expected title of university button pressed --></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<!-- Expected details of university button pressed -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Apply</button>
</div>
</div>
</div>
</div>
我相信这可以用Javascript轻松解决。您可以在调用函数以更新模型的按钮上放置一个 onclick 属性。
标题可以更新为:
document.getElementById("UniModalTitle").innerHTML = "University Title";
然后,为了更新详细信息,它是相同的过程,但具有不同的ID。您需要为模型主体提供一个 ID 才能完成此操作。