gpt4 book ai didi

python - 在 Django PermissionDenied 中发送自定义消息

转载 作者:太空狗 更新时间:2023-10-29 20:49:45 24 4
gpt4 key购买 nike

每当不允许用户访问任何页面时,我正在使用 django 的 PermissionDenied 呈现 403.html

有很多不同类型的页面,例如,产品页面用户页面用户联系信息所有者信息

我想添加带有 PermissionDenied 的自定义消息,这将告诉用户他不能查看此页面的确切原因。我想将以下动态消息添加到 403.html

You have are trying to `View a Product (id:3094384)` while having a `Trail` account. You are not authorized to view this product. 

 You have are trying to `View a Customer (id:48)` which is Private. You are not authorized to view this User. 

等等。

这是我的代码

elif role.id == Project.ROLE_SALES and not project.sales_person_id == user_id:
raise PermissionDenied

html

<body class="error-page">

<!-- content -->
<section>
<div class="error403">
<h1>403</h1>
</div>
<p class="description">Oops! Request forbidden...</p>

<p>Sorry, it appears the page you were looking for is forbidden and not accessible. If the problem persists, please
contact web Administrator.</p>


# HERE I WANT TO SHOW DYNAMIC MESSAGE.



<a href="{{ request.META.HTTP_REFERER }}" class="btn btn-danger403 btn-primary btn-large" >
Go Back </a>
{{ except }}
</section>



<script src="{% static 'js/jquery.min.js' %}"></script>
<script src="{% static 'js/bootstrap.js' %}"></script>
</body>

可能性

raise PermissionDenied("Custom message")

或者

将上下文传递给 PermissionDenied

建议。

最佳答案

这个答案对您来说可能来得太晚了。但它就在这里。您可以在 Django 代码中使用它:

raise PermissionDenied("Custom message")

然后在 403.html 模板中使用以下代码片段显示自定义消息:

{% if exception %}
<p>{{ exception }}</p>
{% else %}
<p>Static generic message</p>
{% endif %}

传递给“PermissionDenied”的消息字符串在模板上下文中可用,如 Django 文档中所述 - https://docs.djangoproject.com/en/1.10/ref/views/#http-forbidden-view

关于python - 在 Django PermissionDenied 中发送自定义消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25376741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com