86👍
Make sure you install pip install djangorestframework
and include rest_framework in the setting.py
INSTALLED_APPS = [
'rest_framework',
]
- [Django]-Django-rest-framework returning 403 response on POST, PUT, DELETE despite AllowAny permissions
- [Django]-Django model one foreign key to many tables
- [Django]-Using Cloudfront with Django S3Boto
30👍
This is my attempt to explain the problem and collect everyone else’s responses into a single list. Thanks to everyone for giving me shoulders to stand on!
I believe this happens because Django REST Framework wants to render a template (rest_framework/api.html
), but the template can’t be found. It seems there are two approaches to fix this:
Approach 1: Make templates work
Ensure REST Framework is included in INSTALLED_APPS
in settings.py
:
INSTALLED_APPS = [
...
'rest_framework',
...
]
And ensure APP_DIRS
is True
in your template configuration (it defaults to False
if not specified). This allows Django to look for templates in installed applications. Here’s a minimal configuration that seems to work, though you might have more config here:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
},
]
Approach 2: Return a JSON response
If you tell REST Framework to render a JSON response then it doesn’t need to use a template so you don’t need to change the APP_DIRS
settings as mentioned above. It also seems like you might not even need to list rest_framework in INSTALLED_APPS
, though it might be necessary to have it there for other reasons.
You can do this globally in settings.py:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
]
}
Or if you’re using the @api_view
decorator then you can specify JSONRenderer on each view:
@api_view(['GET'])
@renderer_classes([JSONRenderer])
def some_view(request):
return Response({'status': 'yay'})
See the REST Framework renderers documentation for details.
- [Django]-Django import error – No module named core.management
- [Django]-Printing Objects in Django
- [Django]-Django: Record with max element
28👍
I also had same kind of problem.
Make sure you have rest_framework installed in your setting in "installed apps"
- [Django]-How to use permission_required decorators on django class-based views
- [Django]-Http POST drops port in URL
- [Django]-Django: Fat models and skinny controllers?
14👍
Make sure that you added rest_framework
in your installed_apps
to your settings.py
file:
INSTALLED_APPS = [
'rest_framework',
]
- [Django]-Django – How to use decorator in class-based view methods?
- [Django]-Django: how save bytes object to models.FileField?
- [Django]-How to duplicate virtualenv
13👍
”’
Try one of these for sure help you out:
1: add rest_framework to settings.py app list, sometime order in which your applications are listed may be the reason.
”’
INSTALLED_APPS = [
'rest_framework',
...
]
”’
2: review your template settings. See Backend, DIR and APP_DIRS. in case you have customized the rest-framework template please check if the path you have defined is correct, make APP_DIRS: True . In most of the cases this will resolve.
”’
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
....
}
]
”’
3: check the default renderer classes settings:
”’
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
...
]
}
”’
4: If you are using api_view decorators on function based view make sure you have provided renderers correctly. i.e.
@renderer_classes([JSONRenderer])
”’
- [Django]-Django template includes slow?
- [Django]-Substring in a django template?
- [Django]-Cannot set Django to work with smtp.gmail.com
12👍
I hit this issue when upgrading from an old Django version to Django 2.0. My settings.py
did not have a TEMPLATE
directive at all, so I snagged the following from a new django-admin.py startproject ...
run:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Add that to your settings.py
if you don’t have TEMPLATES
directive in your settings.py
. Worked for me.
- [Django]-Django urlsafe base64 decoding with decryption
- [Django]-Django Rest Framework Conditional Field on Serializer
- [Django]-How to manually assign imagefield in Django
11👍
I have come across the same issue and found out that rest_framework wasn’t added to the installed apps in settings.py. Adding it resolved my issue.
- [Django]-Django AutoField with primary_key vs default pk
- [Django]-Is this the right way to do dependency injection in Django?
- [Django]-How can I get MINIO access and secret key?
5👍
setting.py
add rest_framework , if rest_framework is not added
Ex:
INSTALLED_APPS = ["rest_framework"]
- [Django]-Get object by field other than primary key
- [Django]-Django character set with MySQL weirdness
- [Django]-Error: No module named staticfiles
3👍
The order of the installed apps matters a lot. In my case i added ‘rest_auth’ above ‘rest_framework’ so it gave this error but when i reordered it (‘rest_framework’ above ‘rest_auth’, ‘rest_auth.registration’, ‘rest_framework.authtoken’ etc), this error cleared.
sample Proper order below:
INSTALLED_APPS = [
...
'rest_framework',
'rest_auth',
'rest_auth.registration',
'rest_framework.authtoken',
...
]
Thanks.
- [Django]-Do I need Nginx with Gunicorn if I am not serving any static content?
- [Django]-Create Django model or update if exists
- [Django]-How to execute a Python script from the Django shell?
2👍
Other than adding 'rest_framework'
inside your INSTALLED_APPS
, try adding the following inside your TEMPLATES.OPTIONS
:
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader'
],
- [Django]-How exactly do Django content types work?
- [Django]-UUID as default value in Django model
- [Django]-Http POST drops port in URL
- [Django]-Django – No module named _sqlite3
- [Django]-Invalid http_host header
- [Django]-Annotate with latest related object in Django
1👍
instead of using HttpResponse, use:
from rest_framework.response import Response
return Response(data=message, status=status.HTTP_200_OK)
- [Django]-Sending post data from angularjs to django as JSON and not as raw content
- [Django]-How can I check the size of a collection within a Django template?
- [Django]-Referencing multiple submit buttons in django
0👍
In installed apps if you used rest_framework
in your project add rest_framework
in setting.py
file:
INSTALLED_APPS = [
'rest_framework',]
- [Django]-Login Page by using django forms
- [Django]-How to make two django projects share the same database
- [Django]-Multiple annotate Sum terms yields inflated answer
-1👍
I have came across the same problem, I was sending an empty response. Try to put a different infomation into Response()
in create_user
function to check if it works at all
- [Django]-Django {% if forloop.first %} question
- [Django]-How do you serialize a model instance in Django?
- [Django]-Django import error – No module named core.management