django-使用不同的参数多次调用视图

时间:2019-05-27 10:09:06

标签: javascript html django

我有一个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 %}循环中使用它? 谢谢。

1 个答案:

答案 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>