Я использую некоторые сторонние теги шаблонов в моем приложении Django (поддерживаемые в другом месте), которые возвращают имя пользователя в виде строки, к которой я могу получить доступ в своих шаблонах, как это.
{% for user in gr.user.foll.list %}
{{user}}
Проблема в том, что {{user}} возвращается в виде строки - мне нужно преобразовать в пользовательский объект Django, если он существует в DB Django, или установить переменную unRegistered, если нет, то я могу сделать что-то вроде:
{ user.get_profile.about }} # get profile information
Поэтому я подумал, что напишу свой первый тег шаблона Django, чтобы использовать его следующим образом:
{% webapp_user_lookup user %} # my custom tag
{% ifnot unRegistered %}
{{ user.get_profile.about }} # get profile information - would fail with a string
{% endifnot %}
{% endfor %}
Код, который я использую в другом месте для поиска пользователя в представлении:
try:
user = User.objects.get(username__iexact=user)
unRegistered = False
if not other_user.is_active:
unRegistered = True
except:
unRegistered = True
Однако, глядя на примеры тегов Django Template, у меня возникают проблемы с пониманием того, как лучше структурировать пользовательский тег шаблона, взять мое строковое имя пользователя - и отправить результаты обратно в виде объекта, если они существуют, или установить переменную, если нет и оригинальная строка. Я действительно хотел бы лучше понять, как работает структура, и если мне нужен «класс», и если да, то почему. (Я новичок в программировании).