Django с древовидным просмотром Bootsrap
Я пытаюсь создать страницу для отображения папки и ее содержимого с помощью Tree-view Bootstrap. Папка может содержать множество вложенных папок и файлов (дочерние узлы). Я хочу реализовать один из этих примеров в приложении Django.
Страница Tree-views в стиле Bootstrap. Допустим, вот эта Анимированные Tree-views.
где находится моя модель:
class Document(models.Model):
Title = models.CharField(max_length=150)
SHRPath = models.FileField(upload_to='Document/', validators= [validate_file_size])
def __str__(self):
return self.Title
и views.py:
def FileTree(request):
documents = Document.objects.all()[:100]
tree_data = []
for document in documents:
shr_path_string= str(document.SHRPath)
parents = shr_path_string.split('/')
nodes = [{"text": parent} for parent in parents]
tree_data.append({"text": document.Title, "nodes": nodes})
context = {
'tree_data': tree_data,
}
return render(request, 'filetree.html', context)
а HTML-страница имеет вид:
<!DOCTYPE html>
<div id="treeview"></div>
<script>
let data = {{ tree_data|safe }};
$(document).ready(function() {
console.log("Tree data:", data);
$('#treeview').treeview({
data: data,
});
});
</script>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Bootstrap Treeview CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-treeview/1.2.0/bootstrap-treeview.min.css">
<!-- Bootstrap Treeview JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-treeview/1.2.0/bootstrap-treeview.min.js"></script>
Однако это не работает и показывает бланковую страницу!.
Затем, чтобы проверить, отображаются ли данные на странице, я проверил это, добавив этот код на страницу, и все в порядке.
<div class="row">
<div class="card card-body">
<a class="btn btn-success btn-sm btn-block mb-2" href="#">Reports</a>
<table class="table" id='serchtb'>
<thead class="thead-light">
<tr>
<th class="mb-2 text-dark">Title</th>
<th class="mb-2 text-dark">Doc</th>
</tr>
</thead>
{% for parent in tree_data %} <!-- this is from-->
<tr>
<td class="p-1 mb-1 text-danger">{{ parent.text }}</td>
<td class="p-1 mb-1 text-dark">{{ parent.nodes.0.text }}</td>
<td class="p-1 mb-1 text-dark">{{ parent.nodes.1.text }}</td>
<td class="p-1 mb-1 text-dark">{{ parent.nodes.2.text }}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
показывает таблицу, содержащую мои данные.
Как реализовать динамическую интерактивную страницу с помощью древовидных представлений Bootstrap? Всего наилучшего