Могу ли я поднять Http404 в теге шаблона Django?
У меня есть приложение Django, которое предоставляет тег шаблона profile
, Тег принимает имя пользователя в качестве аргумента. Как мне относиться к ситуации, когда нет User
экземпляр с данным именем пользователя? Имеет ли смысл поднимать HTTP 404 внутри тега шаблона? Или мне просто передать пустой словарь в шаблон?
4 ответа
Я не думаю, что можно поднять 404 из шаблона, и вы не должны делать это, если можете. Вы должны держать логику и представление отдельно.
У вас есть две возможности звука.
- Ничего не рендеринг с вашим тегом шаблона
- Поднимите ошибку шаблона.
Вы не говорите точно, что делает ваш шаблонный тег, поэтому я не могу рекомендовать ни один из двух, но наиболее обычная вещь, которую нужно сделать с шаблонным тегом, - это молчаливая ошибка.
Если страница ориентирована на пользователя, вы должны заставить пользователя @login_required
перед рендерингом этой страницы, чтобы вы знали, что пользователь существует.
В противном случае, по соглашению, вы должны просто молча потерпеть неудачу в тегах шаблона.
Что вы должны сделать, это проверить в вашем шаблоне, если user
переменная существует до отображения profile
тег.
Я вижу два пути:
Используйте оператор if с кодом JavaScript для перенаправления, например
{% if profile_not_exist %}
Javascript with redirect
{% else %}
Generic code
{% endif %}
Или определите логику с точки зрения (лучше), как
def index(request):
if(profile_not_exist):
indexTemplate = loader.get_template('404.html')
else:
indexTemplate = loader.get_template('index.html')