#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». Я создал список кортежей с информацией и передаю ее через контекст. Я просто не могу заставить его перевести.