Python – django.core.exceptions.ImproperlyConfigured。 There doesn’t seem to be any pattern in the included URLconf

django.core.exceptions.ImproperlyConfigured。 There doesn’t seem to be any pattern in the included URLconf… here is a solution to the problem.

django.core.exceptions.ImproperlyConfigured。 There doesn’t seem to be any pattern in the included URLconf

I’m trying to do a simple crud demo project API for mobile using the django rest framework and get the following 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 Rohan Varma’s answer
After changing the 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),
]

The following error occurred:
Error 1

Edit the interpreter answer
After changing the crud_demo/urls.py
Import View from crud_operations

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

The following error occurred:
Error2

Solution

If you’re using Django 2.0.1, you should know that Django has changed its URLpatterns from Django 2.0
Use the following code in your URL and remove the unwanted admin.autodiscover().

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),

Related Problems and Solutions