这似乎是一个简单的问题,但我似乎无法找到一个简单的答案。 Django似乎给了这种使用所需权限或登录所需的装饰器限制访问位置的简单方法,但是我从Django文档看不到如何传递错误消息(可能使用消息框架)。如果我不得不推出我自己的装饰器来做到这一点,那么django装饰器有什么意义呢?他们只是没有显示任何错误信息?Django - 装饰者和错误消息
2
A
回答
-1
我会认为你只是避免阅读本
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用于在登录页面上显示额外的消息。
0
2
我认为你正在将安全和权限与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)
相关问题
- 1. 如何装饰错误消息
- 2. Django Contenttypes和装饰
- 3. WPF装饰者与定制装饰者?
- 4. 当装饰失败时显示错误消息
- 5. Django permission_required错误消息?
- 6. Django扩展错误消息
- 7. Django弹出错误消息
- 8. RabbitMQ消费者错误消息
- 9. 例装饰错误
- 10. 阻止Django消息一次显示错误消息和成功消息
- 11. 成本装饰者
- 12. ASIHTTPRequest错误消息 - 初学者
- 13. django @login_required修饰符错误
- 14. 装饰者和装饰控件之间的交换参数
- 15. 装饰元素上的装饰者和事件
- 16. 使用django和AngularJS登录需要装饰者与JWT
- 17. 装饰观点引起ViewDoesNotExist错误
- 18. 解析错误消息给Django模板?
- 19. Django:如何覆盖unique_together错误消息?
- 20. django登录不显示错误消息
- 21. Django:更改validate_ipv46_address的错误消息
- 22. Django Ajax返回错误消息
- 23. django模型保存错误消息
- 24. NTLDR错误消息和WPF
- 25. SQL WHERE和错误消息
- 26. Django @login_required装饰器
- 27. ZEND - 装饰者和元素的位置?
- 28. NHibernate的装载错误消息
- 29. 错误消息时PIP安装xlwt
- 30. 装饰者 - 观点映射断言错误
您是否阅读过文档?他们重定向到登录页面。 – 2011-01-26 02:13:22