My django project stopped working recently and is showing me 'set' object is not subscriptable error . I want to know how this error can be solved
Here is my 'urls.py'
'''
//this is the urls.py and the error arises from here##
Heading
## from django.contrib import admin from django.urls import path,include from rest_framework import routers from hotel.views import BookedRoomsViewSet,roomsViewSet,userViewSet,eventViewSet
router = routers.DefaultRouter()
router.register(r'BookedRooms',BookedRoomsViewSet)
router.register(r'Rooms',roomsViewSet)
router.register(r'Users',userViewSet)
router.register(r'Events',eventViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('',include(router.urls))
]
Here is the 'models.py' file
'''
from django.db import models
from datetime import date
from django.utils import timezone
# Create your models here.//models.py
class Room(models.Model):
Room_no = models.IntegerField()
Type = models.CharField(max_length=30)
Booked = models.BooleanField(default= False)
class BookedRooms(models.Model):
firstname = models.CharField(max_length=30)
lastname = models.CharField(max_length=30)
phonenumber = models.CharField(max_length=30)
roomtype = models.CharField(max_length=20)
room = models.ForeignKey(Room,on_delete = models.CASCADE,null = True)
class Users(models.Model):
username = models.CharField(max_length=30)
email = models.EmailField(max_length=30)
password = models.CharField(max_length=10)
class Events(models.Model):
name = models.CharField(max_length=100)
details = models.TextField(max_length=300)
startDate = models.CharField(max_length=12)
startTime = models.TimeField()
endDate = models.CharField(max_length=12)
endTime = models.TimeField()
'''
Here is the 'serializers.py' file
'''
from rest_framework import serializers
from .models import BookedRooms,Room,Users,Events
class RoomSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model = BookedRooms
fields = ('id','firstname','lastname','phonenumber','roomtype','room')
class roomSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model = Room
fields = ('id','Room_no','Type','Booked')
class userSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model=Users
fields= ('id','username','email','password')
class eventSerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model = Events
fields = ('id','name','details','startDate','startTime','endDate','endTime')
'''
Here is the 'views.py' file
'''
from django.shortcuts import
from .models import BookedRooms,Room,Users,Events
from .serializers import RoomSerializers,roomSerializers,userSerializers,eventSerializers
from rest_framework import viewsets
from rest_framework.authentication import BasicAuthentication
from rest_framework.permissions import IsAuthenticated,
#from rest_framework.views import APIView
# Create your views here.
class BookedRoomsViewSet(viewsets.ModelViewSet):
authentication_classes = (BasicAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = BookedRooms.objects.all()
serializer_class = RoomSerializers
class roomsViewSet(viewsets.ModelViewSet):
authentication_classes = (BasicAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = Room.objects.all()
serializer_class = roomSerializers
class userViewSet(viewsets.ModelViewSet):
authentication_classes = (BasicAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = Users.objects.all()
serializer_class = userSerializers
class eventViewSet(viewsets.ModelViewSet):
authentication_classes = (BasicAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = Events.objects.all()
serializer_class = eventSerializers
'''
I would like if the answers are fast and here is the full traceback
'''
Performing system checks...
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000008516CD17B8>
Traceback (most recent call last):
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\autoreload.py", line 225, i
n wrapper
fn(*args, **kwargs)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\commands\runserve
r.py", line 117, in inner_run
self.check(display_num_errors=True)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line 37
9, in check
include_deployment_checks=include_deployment_checks,
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line 36
6, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\registry.py", line 71
, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\urls.py", line 40, in
check_url_namespaces_unique
all_namespaces = _load_all_namespaces(resolver)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\urls.py", line 57, in
_load_all_namespaces
url_patterns = getattr(resolver, 'url_patterns', [])
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\functional.py", line 37, in
__get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py", line 533, in
url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\functional.py", line 37, in
__get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py", line 526, in
urlconf_module
return import_module(self.urlconf_name)
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "C:\users\jerry\documents\django-project\vuengo_env\vuengo\vuengo\urls.py", line 18, in <module>
from rest_framework import routers
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\rest_framework\routers.py", line 25, in
<module>
from rest_framework import RemovedInDRF311Warning, views
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\rest_framework\views.py", line 17, in <m
odule>
from rest_framework.schemas import DefaultSchema
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\rest_framework\schemas\__init__.py", lin
e 33, in <module>
authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES,
File "C:\Users\Jerry\AppData\Local\Programs\Python\Python36\lib\site-packages\rest_framework\settings.py", line 213, i
n __getattr__
val = self.user_settings[attr]
TypeError: 'set' object is not subscriptable
'''
I experienced the same error after I used comma (,) instead of colon (:) in settings.py REST_FRAMEWORK dictionary.
This caused the error
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS', 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE', 10,
}
The above code is a python set, hence the error:
val = self.user_settings[attr]
~~~~~~~~~~~~~~~~~~^^^^^^
TypeError: 'set' object is not subscriptable
This fixed my code
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
}
Check if this is the case in any of the configuration directories in settings.py file.