django.core.exceptions.ImproperlyConfigured. The included URLconf does not appear to have any patterns in it

12,030

if you are using django 2.0.1 you should be aware that django has changed its urlpatterns from django 2.0 use the below code in your urls and remove that admin.autodiscover() as its not needed

from django.urls import path

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles/<yyyy:year>/', views.year_archive),
    ...
]

change this line

path(r'^models/(?P<pk>[0-9]+)$', views.model_detail),

to

path('models/<int:pk>/', views.model_detail),

and

path(r'^models/$', views.model_list),

to

path('models/', views.model_list),
Share:
12,030

Related videos on Youtube

Naveen Kumar M
Author by

Naveen Kumar M

Senior Solutions Architect ಎಲ್ಲಾದರು ಇರು ಎಂತಾದರು ಇರು ಎಂದೆಂದಿಗು ನೀ ಕನ್ನಡವಾಗಿರು! ಕನ್ನಡವೇ ಸತ್ಯ ಕನ್ನಡವೇ ನಿತ್ಯ.

Updated on June 04, 2022

Comments

  • Naveen Kumar M
    Naveen Kumar M almost 2 years

    I am trying to do simple crud demo project API's for mobile using django rest framework and getting below error

    django.core.exceptions.ImproperlyConfigured: The included URLconf '' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

    Project Name : crud_demo

    App Name : crud_operations

    crud_demo/urls.py

    from django.conf.urls import include, url
    from django.contrib import admin
    
    admin.autodiscover()
    
    
    urlpatterns= [
        url(r'^admin/', admin.site.urls),
        url(r'^crud_operations/', include('crud_operations.urls')),
    ]
    

    crud_operations/models.py

      from django.db import models
    
    # Create your models here.
    
    class Member(models.Model):
        firstname = models.CharField(max_length=40)
        lastname = models.CharField(max_length=40)
    

    crud_operations/serializers.py

    from crud_operations.models import Member
    from rest_framework import serializers
    
    class MemberSerializer(serializers.ModelSerializer):
        class Meta:
            model = Member
            fields = ('firstname', 'lastname')
    

    crud_operations/urls.py

    from crud_operations import views
    
    urlpatterns = [
         url(r'^models/$', include(views.model_list)),
         url(r'^models/(?P<pk>[0-9]+)$', include(views.model_detail)),
    ]
    

    crud_operations/views.py

    from django.shortcuts import render, redirect
    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    from rest_framework import status
    from .models import Member
    from crud_operations.serializers import MemberSerializer
    
    @api_view(['GET', 'POST'])
    def model_list(request):
        if request == 'GET':
            member = Member.objects.all()
            serializer = MemberSerializer(member)
            return Response(serializer.data)
        elif request == 'POST':
            serializer = MemberSerializer(data=request.DATA)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data, status=status.HTTP_201_CREATED)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        return Response({'key': request}, status=status.HTTP_200_OK)
    
    
    @api_view(['GET', 'PUT', 'DELETE'])
    def model_detail(request, pk):
        try:
            member = Member.objects.get(pk=pk)
        except Member.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
    
        if request == 'GET':
            serializer = MemberSerializer(member)
            return Response(serializer.data)
    
        elif request == 'PUT':
            serializer = MemberSerializer(member, data=request.DATA)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            else:
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
        elif request.method == 'DELETE':
            member.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
    
        return Response({'key': 'value'}, status=status.HTTP_200_OK)
    

    EDIT for Rohan Varma Answer After changed crud_demo/urls.py

    from crud_operations import views
    
    urlpatterns = [
         url(r'^models/$', views.model_list),
         url(r'^models/(?P<pk>[0-9]+)$', views.model_detail),
    ]
    

    Getting below error : Error 1

    EDIT For Exprator Answer After changed crud_demo/urls.py from crud_operations import views

        urlpatterns = [
              path(r'^models/$', views.model_list),
              path(r'^models/(?P<pk>[0-9]+)$', views.model_detail),
        ]
    

    Getting below error : Error2

  • Naveen Kumar M
    Naveen Kumar M over 6 years
    Okay But now I am getting My Edit 1 issue after changing above lines. request == 'GET' is not true in views.py. Please can you help on this. Please refer EDIT for Rohan Varma Answer
  • Exprator
    Exprator over 6 years
    thats a different question, you need to put it as a question with the view code of that particular url, hope you understand the rule of stackoverflow
  • Sebi
    Sebi over 3 years
    Really can't understand WHY they can't just leave the code alone (as in backwards compatible). All these useless, unrequested "features" only end up costing time.