Это похоже на простой вопрос, но я не могу найти простой ответ. Кажется, Django дает этот отличный простой способ ограничить доступ к местам, используя требуемые разрешения или необходимые декорации для входа в систему, но я не могу видеть из документов Django, как можно передать сообщение об ошибке (возможно, используя структуру сообщений). Если мне нужно катить свой декоратор, чтобы сделать это, в чем смысл декораторов джанго? Они просто не отображают сообщений об ошибках?Django - декораторы и сообщения об ошибках
ответ
Я предполагаю, что вы просто избегать чтения этого
http://docs.djangoproject.com/en/1.2/topics/auth/#the-login-required-decorator
login_required() выполняет следующие действия:
Если пользователь не вошел в систему, перенаправлять к
settings.LOGIN_URL
, передавая текущий абсолютный путь в запросе строка. Пример:/accounts/login/?next=/polls/3/
.Если пользователь вошел в систему, выполните нормально просмотр . Код просмотра является бесплатным , чтобы предположить, что пользователь выполнил вход в систему.
Нет «сообщений об ошибках». Сообщения об ошибках являются грубыми. И в значительной степени бесполезно. Они часто являются признаком плохого дизайна.
Как правило, вам не нужны миллионные небольшие пояснения. Действительно, страница входа по умолчанию работает отлично для 80% случаев использования. Если вам необходимо уточнить ситуацию, вы можете предоставить свою собственную HTML-форму. Вы можете использовать обычный контекст шаблона, чтобы добавить дополнительную информацию. У вас есть Messages Framework для представления дополнительных сообщений на странице входа.
Я читал это, спасибо. Многие веб-сайты, требующие регистрации, перенаправляют вас с сообщением об ошибке, вы должны войти в систему, чтобы просмотреть эту страницу. Вы говорите, что у меня должна быть только html-страница с целью отображения «вы должны войти» и другую страницу html для отображения «у вас нет разрешения»? Мне это кажется глупым.Если вы можете перенаправить обратно на свою домашнюю страницу, на которой есть форма входа в систему, и просто укажите сообщение, в котором говорится: «Пожалуйста, войдите» или «у вас нет правильного разрешения», что сделало бы больше смысла – JPC
Возможно, для чего-то простого как, нужно войти в систему, но что, если вам нужно определенное разрешение на доступ к чему-то, и вы вошли в систему, но не имеете требуемого разрешения. Разве не имеет смысла отображать какое-то сообщение о том, какое разрешение вам нужно? – JPC
@JPC: «Разве не было бы смысла отображать какое-то сообщение о том, какое разрешение вам нужно?» На самом деле, нет. Они не разрешены, и именно так разработан сайт. Если им нужно разрешить, им либо потребуется другое имя пользователя, либо им нужно позвонить в службу поддержки. Это не тонкости. Разрешения должны быть простыми и очевидными. –
Вы послали пользователю автоматическое сообщение об ошибке .. Вы должны были бы смотреть, как на излишнее ездить ..
Вы имеете в виду переопределение декораторов и создание собственного? – JPC
Я думаю, что вы объединяете безопасность и разрешения с системой аутентификации Django. По большей части инструменты Django в основном предназначены для разделения пользователей на две группы: аутентифицированные (вошли в систему) и анонимные. Это имеет смысл для 90% веб-сайтов, так как вам не нужна слишком большая дифференциация (может быть, другая для скрытого администратора, но это крайний случай, а не норма).
Декоратор permission_required - очень простой крючок для людей, желающих перенаправить людей, у которых не было разрешений, чтобы перейти на страницу входа. Однако в какой-то момент этого недостаточно. Если вам требуется определенное разрешение, и у пользователя его нет, как их перенаправлять на страницу входа?
В этом случае так легко свернуть собственный декоратор, используя сообщения для конкретных ошибок. Один такой пример:
def user_has_permissions(method):
return user_passes_test(lambda u: u.has_perm('my_permission'), login_url='/permission-denied/')(method)
Я полагаю, что это был бы лучший вариант. Я заметил, что в django docs login_required поддерживает только login_url в версии разработки (1.2 не поддерживает его). Но в 1.2, login_url поддерживается для декодеров разрешений. Почему? – JPC
- 1. Стандартные сообщения об ошибках django
- 2. Сообщения об ошибках поля Django
- 3. Сообщения об ошибках и сообщения об ошибках - это нормально?
- 4. Django сообщения об ошибках отправляются неверным получателям
- 5. Как разобрать сообщения об ошибках Django
- 6. Настроить сообщения об ошибках на django-registration
- 7. Как изменить тему сообщения об ошибках Django?
- 8. Django: Дополнительные полезные сообщения об ошибках DoNotExist?
- 9. дизайн сообщения об ошибках
- 10. Сообщения об ошибках `validates`
- 11. Сообщения об ошибках проверки
- 12. сообщения об ошибках coredata
- 13. Сообщения об ошибках HTML5
- 14. Сообщения об ошибках печати
- 15. Сообщения об ошибках Windows
- 16. gcc сообщения об ошибках
- 17. Specter сообщения об ошибках
- 18. Изменчивые сообщения об ошибках
- 19. Доступные сообщения об ошибках
- 20. Сообщения об ошибках перегрузки
- 21. сообщения об ошибках
- 22. Сообщения об ошибках `HttpClient`
- 23. SBCL Сообщения об ошибках
- 24. Описательные сообщения об ошибках
- 25. Стандартные сообщения об ошибках
- 26. Сообщения об ошибках Rails
- 27. Как читать и понимать сообщения об ошибках django?
- 28. phpMyAdmin усекает сообщения об ошибках
- 29. Отображать многоязычные сообщения об ошибках
- 30. Сообщения об ошибках Pdo mssql
Вы прочитали документацию? Они перенаправляются на страницу входа в систему. –