django - несколько раз вызывать представление с разными параметрами - PullRequest
0 голосов
/ 27 мая 2019

У меня есть представление 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 голосов
/ 27 мая 2019

Я сделал это. Если у кого-то еще есть эта проблема, мое решение следующее:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...