我有一个django视图,该视图将路径作为参数并返回该路径内的对象列表。 我需要使用不同的路径多次调用此视图。
这是一个类似我的观点的例子:
python views.py
def filelist(request, foo):
files = os.listdir(foo)
context = { 'files' : files, }
return render(request,'template2.html', context)
urls.py类似于:
python urls.py
urlpatterns = [
path('', views.index, name='index'),
path('filelist/<str:path>/', views.filelist, name = "filelist"),
]
模板是这样的:
HTML template.html
<div class="collapse">
<div class="one">
{% include 'template2.html' %}
</div>
</div>
<div class="collapse">
<div class="two">
{% include 'template2.html' %}
</div>
</div>
<script>
$(".one").load("{% url 'filelist' 'path1' %}", function() {
alert( "Ok1" );
});
$(".two").load("{% url 'filelist' 'path2' %}", function() {
alert( "Ok2" );
});
</script>
一切正常,但变量{{ files }}
始终相同。
在template2.html内部,只有一个for循环显示文件的名称。
有帮助吗?是否可以将变量{{ files }}
存储在某些局部变量中,然后在{% for f in files %}
循环中使用它?
谢谢。
答案 0 :(得分:0)
我做到了。 如果其他人有此问题,我的解决方法是:
HTML template.html
<a class="btn btn-light btn-s" id="buttonone">1</a>
<a class="btn btn-light btn-s" id="buttontwo">2</a>
<script>
$(document).ready(function() {
$("#buttonone").click(function(event){
$('.one').load("{% url 'filelist' 'path1' %}");
});
});
$(document).ready(function() {
$("#buttontwo").click(function(event){
$('.two').load("{% url 'filelist' 'path2' %}");
});
});
</script>