Изменение способа отображения возвращаемых выходных данных в Django

#python #django #jinja2

#python #django #jinja2

Вопрос:

Недавно я начал изучать Python / Django в целом, и в попытке ускорить процесс обучения и в то же время сделать что-то конструктивное я начал свой собственный личный проект.

У меня установлена последняя версия Django / Python / Jinja2 вместе с битвой Python.яйцо net API. В настоящее время я запрашиваю «символ» и пытаюсь изменить вывод возвращаемого значения, вот функция из моих представлений:

 def viewCharacter(request, name):
    character = get_object_or_404(Member, name=name)
    info = Character('EU', 'Auchindoun', name, fields=[Character.GUILD])

    ctx = { 'character': character, 'info': info, 'guildname': 'Guild Name' }
    return render_to_response("roster/viewCharacter.html", ctx, request)
  

Теперь, в моем шаблоне, я попытался «перевести» info.class_ (который возвращает числовое значение) из его числового значения в строку (имя класса), но я всегда получаю сообщения об ошибках о невозможности использования info.class_ в операторах / циклах if / for или других ошибках. (Пробовал сравнивать его с двумя кортежами)

Я действительно не могу найти способ сделать это онлайн, поэтому я пришел в единственное место, которое больше всего помогло мне в процессе обучения.

Любая помощь была бы очень признательна! — Nieeru

Комментарии:

1. Можете ли вы вставить сюда код своего шаблона? Как вы «переводите» _class ?

2. В основном это происходило методом проб и ошибок. У меня больше нет кода шаблона, поскольку я начал пытаться сделать это с нуля!

Ответ №1:

Если вам действительно нужно использовать classname в шаблоне, попробуйте использовать этот фильтр шаблона или просто получите его в представлении и передайте в контексте 🙂

Ответ №2:

Есть ли какая-либо причина, по которой вы не можете добавить другую переменную в контекст следующим образом:

ctx = { ‘character’: символ, ‘info’: информация, ‘class’: repr(info.class_), ‘guildname’: ‘Название гильдии’ }

РЕДАКТИРОВАТЬ: С предоставленной вами дополнительной информацией, вот мое новое предложение.

Изменение:

 ctx = { 'name': name, 'character': character, 'info': info, 'class': repr(info.class_), 'guildname': 'Team-Potato' }
  

Для:

 ctx = { 'name': name, 'character': character, 'info': info, 'className': classnameDict[info.class_], 'guildname': 'Team-Potato' }
  

Это просто приводит к просмотру класса в представлении. Теперь добавьте его в свой шаблон, используя

{{ className }}

Комментарии:

1. Вовсе нет! Я открыт для всех предложений.

2. Правильно. Взгляните на мой views def viewCharacter(запрос, имя): character = get_object_or_404(Член, имя=name) info = Character(‘EU’, ‘Auchindoun’, имя, поля=[Символ. ГИЛЬДИЯ]) classnameDict = { 1: ‘Воин’, 2: ‘Паладин’, 3: ‘Охотник’, 4: ‘Разбойник’, 5: ‘Священник’, 6: ‘Рыцарь смерти’, 7: ‘Шаман’, 8: ‘Маг’, 9: ‘Чернокнижник’, 10: ‘Неизвестный’, 11: ‘Друид’, } ctx = { ‘name’: имя, ‘character’: персонаж, ‘info’: информация, ‘class’: repr( info.class_), ‘имя гильдии’: ‘Team-Potato’ } возвращает render_to_response(«roster/viewCharacter.html «, ctx, запрос) Как бы я приступил к переводу info.class из нового dict?

3. Перевод в шаблоне не требуется (вот что repr делает), просто выведите его, используя новую переменную в вашем шаблоне: {{ class }}

4. {{ class }} возвращает точно то же самое, что и info.class_, к сожалению. Идентификатор класса персонажа, а не переведенное имя!

5. Позвольте мне попытаться еще раз объяснить. info.class_ возвращает идентификатор класса персонажа (из World of Warcraft) без какого-либо перевода на то, как называется класс. Чего я хочу добиться, так это способа указать этот идентификатор на фактическое имя класса, а не на идентификатор. Скажем, например, info.class_ возвращает «5», я хочу перевести это, например, в «Priest». Я создал список кортежей с информацией и передаю ее через контекст. Я просто не могу заставить его перевести.