Как изменить существующую переменную в шаблоне Django - PullRequest
0 голосов
/ 03 апреля 2019

Новичок в Джанго здесь и нуждается в некоторой помощи.У меня есть переменная bool empty = True.Я успешно передал переменную через представления в мой шаблон.В шаблоне у меня есть цикл while, который включает оператор if / else.Мне нужно иметь возможность изменить мою переменную на False, если она удовлетворяет условию в операторе if.Как только я выхожу из цикла, есть другой оператор if / else для проверки пустых значений: True.

Кажется, я не могу понять, как изменить переменную в шаблоне.

Я пытался использовать оператор with, чтобы изменить переменную, но он не работал правильно для меня, потому что мне пришлось завершить оператор with до окончания цикла.После завершения оператора with переменная возвращается к своему «исходному значению

Views - '' '

def myProjects(request):
    user = request.user
    projects = Project.objects.all() #from db
    empty=True
    return render(request,'users/myProjects.html',locals())

' '' Template - '' '

<div class="row" id="main1">
  <div class="col-2"></div>
  <div class="col-9">
    <div>
      <h1>My Projects: </h1>
      {% for x in proj %}
        {% if x.creator.user == me %}
          <div class="media1">
            <img class="account-img" src="{{x.projectPicture.url}}">
            <div>
              <h5><strong>Project Name: {{x.projectName}}</strong></h5>
              <p>Project Type: {{x.projectType}}</p>
              <p>Creator: <a href="/allUsers?name1={{x.creator.user}}"> {{x.creator.user}} </a></p>
              <p class="text-muted small">Created: {{x.dateTime}}</p>
            </div>
          </div>
          {{empty=False}}
        {% else %}
          {{pass}}
        {% endif %}

      {% if empty==True %}
        <p>You do not have any projects</p>
      {% else %}
        {{pass}}
      {% endif %}
      {% endfor %}
    </div>
  </div>
</div>

{% endblock%}

'' '

1 Ответ

0 голосов
/ 03 апреля 2019

Установка значений переменных в шаблонах противоречит философии дизайна Django. Система шаблонов разработана для отделения логики от представления и , чтобы не быть языком программирования .

Чтобы добиться того, что вы пытаетесь сделать, вы можете сначала отфильтровать проекты в представлении, а затем использовать тег for ... empty . Ваш пример станет примерно таким:

{% for project in projects_created_by_me %}
  <p>Project Name: {{project.projectName}}</p>
{% empty %}
  <p>You do not have any projects</p>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...