我是新的django框架,在我的应用程序我有两个模型,BoardsList和BoardLink:
class BoardsList(models.Model):
master_code = models.CharField(max_length=6, primary_key=True)
uc_code = models.CharField(max_length=20)
description = models.CharField(max_length=200)
customer_name = models.CharField(max_length=30)
def __str__(self):
return "MASTER_CODE = " + self.master_code
class BoardLink(models.Model):
boardsList = models.ForeignKey(BoardsList, on_delete=models.CASCADE)
configuration_sheet_link = models.CharField(max_length=300)
wiring_diagram_link = models.CharField(max_length=300)
def __str__(self):
return self.boardsList_id
相对视图为:
class BoardsListView(generic.ListView):
template_name = 'index.html'
context_object_name = 'boards_list'
paginate_by = 75
def get_queryset(self):
query_filter = self.request.GET.get("find_master", None)
if query_filter is not None:
return BoardsList.objects.filter(Q(master_code__contains=query_filter) |
Q(uc_code__contains=query_filter) |
Q(customer_name__contains=query_filter)).order_by('customer_name')
return BoardsList.objects.order_by('master_code')
class BoardLinkView(generic.DetailView):
template_name = 'index.html'
context_object_name = 'board_link_list'
paginate_by = 1
def get_queryset(self):
query_filter = self.request.GET.get("find_master_link", None)
if query_filter is not None:
return BoardLink.objects.filter(Q(boardsList__exact=query_filter))
在我的HTML页面中,我正确地将boardlist数据显示到一个表中:
<tbody>
{% for board in boards_list %}
<tr>
<td>{{ board.master_code }}</td>
<td>{{ board.uc_code }}</td>
<td>{{ board.description }}</td>
<td>{{ board.customer_name }}</td>
<td>
<form method="GET" action="">
<button type="button" class="btn" name="find_master_link" data-bs-toggle="modal" data-bs-target="#boardLinksModal">
<i class="fa-solid fa-file-lines"></i>
</button>
</form>
</td>
</tr>
{% endfor %}
</tbody>
现在我的问题是我如何能得到BoardLink模型数据记录上的按钮点击事件,并显示它上的引导模式弹出窗口,我已经创建并包括它在我的html页面与:
{% include 'modalPopUp.html' %}
我的模态代码与bootstrap文档示例相同。
提前感谢你的回答!!
这是一个关于模板如何工作的问题。你需要明白的是,当客户端向django服务器请求页面时,django视图会先渲染模板,然后再将其发送回浏览器。这意味着它处理模板中的所有动态标记并将其转换为静态html页面,并将其发送给请求它的浏览器。
这包括{% include 'page.html'%}
标签,顺便说一下,这是超级棒的。
当一个模板被渲染时,如果里面有任何{% include 'page.html'%}
标签,所发生的是被引用的html文件被提取,渲染为静态html,最后嵌入到根模板中。
所有这些都以一个静态html页面的形式发送到客户端浏览器。这意味着,虽然你可以打破你的模板在几个文件,以保持它的整洁,当页面被发送到客户端,它是在一个独特的完全静态的html文件的形式,这是建立解决所有的动态组件在django template tags
的形式。
我希望到现在为止已经放晴了。
如果你理解了我的解释,你也会明白根模板中包含的每个子模板也可以访问与根模板本身相同的上下文变量。
所以在你的情况下,如果你包含了一些html,其中包含一个引导模态,你可以引用相同的上下文变量,你可以在包含包含标签的页面。所以,继续,尝试添加{{ boards_list }}
或{{ board_link_list }}
在你的模态体,你会看到它的工作就在开箱外。
注:BoardLinkView
是一个DetailView,你的context_object_name
是board_link_list
,这是非常误导的,因为它不是一个列表。如果我是你,我就改!