Yanıtlar:
Diğer yanıtlarda yaptığınız gibi görünümden döndürün.
from django.http import HttpResponseForbidden
return HttpResponseForbidden()
raise PermissionDenied
özel 403 görünümünüzü göstermenize izin verme avantajına sahiptir
bir istisna oluşturmak istiyorsanız şunları kullanabilirsiniz:
from django.core.exceptions import PermissionDenied
def your_view(...):
raise PermissionDenied()
Burada belgelenmiştir:
https://docs.djangoproject.com/en/stable/ref/views/#the-403-http-forbidden-view
Geri çekilmenin aksine HttpResponseForbidden
, yükseltme şablonu PermissionDenied
kullanarak hatanın oluşturulmasına neden olur 403.html
veya özel bir "Yasak" görünümü göstermek için ara katman yazılımını kullanabilirsiniz.
throw PermissionDenied
bir işlev çağrısı olarak değil ()
.
403 HTTP hatasının oluşturulmasını denetlemek için isteğe bağlı olarak "403.html" adlı özel bir şablon da sağlayabilirsiniz .
@ Dave-halter tarafından doğru bir şekilde belirtildiği gibi, 403 şablonu yalnızca PermissionDenied öğesini yükseltirseniz kullanılabilir
Aşağıda, "403.html", "404.html" ve "500.html" özel şablonlarını test etmek için kullanılan örnek bir görünüm bulunmaktadır; lütfen proje ayarlarında DEBUG = False ayarını yaptığınızdan emin olun, aksi takdirde çerçeve 404 ve 500 yerine bir geri izleme gösterir.
from django.http import HttpResponse
from django.http import Http404
from django.core.exceptions import PermissionDenied
def index(request):
html = """
<!DOCTYPE html>
<html lang="en">
<body>
<ul>
<li><a href="/">home</a></li>
<li><a href="?action=raise403">Raise Error 403</a></li>
<li><a href="?action=raise404">Raise Error 404</a></li>
<li><a href="?action=raise500">Raise Error 500</a></li>
</ul>
</body>
</html>
"""
action = request.GET.get('action', '')
if action == 'raise403':
raise PermissionDenied
elif action == 'raise404':
raise Http404
elif action == 'raise500':
raise Exception('Server error')
return HttpResponse(html)
Hata ile mesaj göndererek bu şekilde deneyin
from django.core.exceptions import PermissionDenied
raise PermissionDenied("You do not have permission to Enter Clients in Other Company, Be Careful")
Http404
ama yokHttp403
? Neden tutarsızlık?