Django новичок здесь, нужна помощь по базовому промежуточному программному обеспечению, чтобы перенаправить на другой вид, если определенное поле модели пусто.Как перенаправить в промежуточное ПО django? глобальное имя 'view' не определено
Я создаю страницу условий соглашения, с которой пользователи должны перенаправляться сразу после регистрации на платформе, если поле filed_terms в их модели профиля пуста.
Я использую для этого промежуточное ПО. Однако я не могу заставить это работать. Это мой промежуточный класс:
class TermsMiddleware(object):
def process_request(self, request):
if request.user.profile.filled_terms is None:
return redirect(reverse(terms))
Это дает мне следующее сообщение об ошибке:
global name 'terms' is not defined
Я также сличитель URL-адреса, который прекрасно работает, когда я перейти к нему вручную:
url(r'^terms/', 'my_app.views.terms')
У меня есть шаблон terms.html и вид терминов в файле views.py, который отлично работает во всех других отношениях. Я также добавил его к настройкам промежуточного программного обеспечения, чтобы убедиться, что он загружается.
Должен ли я импортировать что-то из представлений или диспетчера url в файл промежуточного программного обеспечения? Если да, то что бы это было? Я на это некоторое время не могу найти ничего полезного.
Каким образом URL-адрес работает, когда я иду к нему вручную? – Javier
, потому что, когда вы добрались до URL-адреса вручную, он будет использовать ваше регулярное выражение на URL-адресе, а 'reverse' будет использовать' name'. Вы можете заставить свой код работать, удалив «обратный» в 'return redirect ('terms')' –
Когда я пытаюсь выполнить ваше решение, я просто постоянно переадресую на термины. Я думаю, что его цикл к терминам, которые не остановятся. – Javier