TypeError: get() missing 1 required positional argument: 'id'

TypeError: get() missing 1 required positional argument: 'id'

TypeError:get() 缺少 1 个必需的位置参数:'id' 在 url.py 中,我无法提及 id 对象。我在ur_pattern中提供的正则表达式,浏览器无法找到'id'。

url.py:

from django.contrib import admin
from django.urls import path
from withoutrest import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'^api/(?P<id>\d+)$', views.EmployeeDetails.as_view()),
]

view.py:

from django.shortcuts import render
from django.views.generic import View
from withoutrest.models import employee
from django.http import HttpResponse
import json
from django.core.serializers import serialize
from withoutrest.mixins import serializeMixin

# Create your views here.
class EmployeeDetails(serializeMixin,View):
    def get(self, request, id, *args, **kwargs):
        emp = employee.objects.get(id=id)
        json_data = self.serialize([emp,])
        return HttpResponse(json_data, content_type='application/json')

mixins.py:

from django.core.serializers import serialize
import json
class serializeMixin(object):
    def serialize(self, emp):
        json_data= serialize('json', emp)
        pdict= json.loads(json_data)
        list=[]
        for obj in pdict:
            emp_data=obj['fields']
            list.append(emp_data)
        json_data=json.dumps(list)
        return json_data

test.py:

import requests

BASE_URL = 'http://127.0.0.1:8000/'
ENDPOINT = 'api/'


def get_resource(id):
    resp = requests.get(BASE_URL + ENDPOINT + id + '/')
    print(resp.status_code)
    print(resp.json())
get_resource(id)
# Change your urls.py and import re_path

from django.urls import path, re_path
from withoutrest import views

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^api/(?P<id>\d+)$', views.EmployeeDetails.as_view()),
]

使用 re_path 而不是路径。

像这样:

re_path(r'^api/(?P<id>\d+)/$', views.EmployeeDetails.as_view()),