Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

How to raise a JSON:API exception with a custom status code? #1128

Answered by sliverc
Nekidev asked this question in Q&A
Discussion options

What the title says. For example, I can raise a ValidationError with forbidden as the code, but the status code will be 400 (not 403).

from rest_framework_json_api import serializers
def my_error_view(request):
 """
 This view raises an exception which will be formatted as a JSON:API error object.
 """
 raise serializers.ValidationError(
 detail="You need the `access_this_view` permission to access this resource.",
 code="forbidden"
 )

Any request to that endpoint in this example will return a 400 error response with a forbidden code. Is there any way to specify a status code?

You must be logged in to vote

Django REST framework has different type of exceptions for different status codes. ValidationError will always return a status code 400. In case you want to have 403 status code you need to raise a PermissionDenied exception.

Replies: 1 comment

Comment options

Django REST framework has different type of exceptions for different status codes. ValidationError will always return a status code 400. In case you want to have 403 status code you need to raise a PermissionDenied exception.

You must be logged in to vote
0 replies
Answer selected by Nekidev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants

AltStyle によって変換されたページ (->オリジナル) /