django - Django自定义视图“您没有权限错误”
问题描述
我为 Django 管理员创建了自己的视图。在这里,我想添加一个订单链接以查看订单,而不会像这样干扰 change_form。
我在 admin.py 中添加了以下代码。
def get_urls(self):
urls = super(OrderAdmin, self).get_urls()
custom_urls = [
path('order/<int:order_id>/view', self.view_order, name="view_order")
]
print(urls)
return urls + custom_urls
def view_order(self, request, order_id):
order = Order.objects.get(pk=order_id)
return render(request, 'shop/order.html', {'order':order})
现在,当我单击链接时,会出现以下屏幕。
有什么问题 ?如何让原始仪表板保留我所做的?
解决方案
您可以拥有具有所需权限的自定义装饰器。
例如,如果您查看应该对登录用户可用的一个:
from rest_framework.permissions import IsAuthenticated
@permission_classes((IsAuthenticated, ))
def view_order(self, request, order_id):
order = Order.objects.get(pk=order_id)
return render(request, 'shop/order.html', {'order':order})
如果您可供任何人使用,您可以使用AllowAny
:
from rest_framework.permissions import AllowAny
@permission_classes((AllowAny, ))
def view_order(self, request, order_id):
order = Order.objects.get(pk=order_id)
return render(request, 'shop/order.html', {'order':order})
此外,您可以将视图编写为类并重新加载def has_change_permission(self, request, obj=None):
方法
推荐阅读
- c++ - Windows 操作系统的 I/O 优先级
- reactjs - React 中的 API 分页
- php - 使用默认数据将数据插入 SQL
- java - 将专色 (PDColor) (PDSeparation) 添加到 PDF 0 SCN
- c# - AWS SDK - S3 GeneratePreSignedURL 方法给出“X-Amz-Expires 必须是非负数”
- localstack - 如何在开发过程中在中央服务器上托管 single-spa 根配置和模块
- php - 从 Laravel 将图像上传到 AWS s3 存储显示 Heroku Server 500 错误
- python - Django 管理员在实时服务器中没有设计
- python - 更改 matplotlib 中子图的“xticks”和“Yticks”的字体大小和粗体
- video - FFMPEG - 链接 - 视频、音频、ASS 字幕,然后覆盖徽标?