Nano Hash - криптовалюты, майнинг, программирование

Как установить var внутри шаблона Django

Я хочу установить несколько переменных из dict в шаблоне Django. Я получаю доступ к элементам и значениям словаря, но когда я пытаюсь установить какое-то значение из этого, это не работает

Это работает:

{% for key, value in v.items %}
   {% if key == 'title' %}<tr>{{ value }}</tr>{% endif%}
   {% if key == 'name' %}<tr>{{ value }}</tr>{% endif%}
{% endfor %}

Это не работает:

{% for key, value in v.items %}
   {% if key == 'title' %}{% with title as value %}{%$ endwith %}{% 
endif%}
   {% if key == 'name' %}{% with name as value %}{%$ endwith %}{% 
endif%}
{% endfor%}
<tr>{{ title }}</tr><tr>{{ name }}</tr> 

Я хочу установить VAR внутри шаблона django из значения dict!


  • это потому, что вы используете {{title}} и {{name}} снаружи с тегом, область действия переменной находится только внутри тегов! 23.03.2019

Ответы:


1

with используется для определения локального контекста, а не для «установки переменной». Итак, как сказал Панкадж, ваши переменные не будут работать, если они не находятся в пределах {% with ... %}{% endwith %}

Обратите внимание, что это должно быть with existing_var as new_var_name, а не наоборот. Вам также не нужно $, чтобы закрыть тег.

Таким образом, это распечатает переменные (не совсем так, как вы хотите, но они будут отображаться):

{% for key, value in v.items %}
   {% if key == 'title' %}{% with value as title %}{{ title }}{% endwith %}{% 
endif%}
   {% if key == 'name' %}{% with value as name %}{{ name }}{% endwith %}{% 
endif%}
{% endfor%}

Однако этого делать не нужно (да и просто менять имя переменной немного бессмысленно). Если v это словарь, почему бы не сделать:

<tr>{{ v.title }}</tr><tr>{{ v.name }}</tr>

Как правило, вам не следует пытаться устанавливать переменные в шаблоне Django. Если вам нужно извлечь данные/выполнить преобразования, вы, вероятно, должны сделать это в своем представлении или с помощью тега шаблона.

23.03.2019
  • Большой! Спасибо @geekfish 23.03.2019

  • 2

    Решение от @geekfish:

    {% for key, value in v.items %}
        <tr>{{ v.title }}</tr><tr>{{ v.name }}</tr>
    {% endfor%}
    

    ;)

    23.03.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..