缺少 1 个必需的位置参数:'request' django restframework
missing 1 required positional argument: 'request' django restframework
我正在使用路由器创建 url,现在我想为我的 api 创建 url,但问题是,我收到错误
createuser() missing 1 required positional argument: 'request'missing 1 required positional argument: 'request'
我在 UserAuthAPIView class 中的所有方法都遇到了同样的错误,我已经阅读了关于 Whosebug 的解决方案,但它们在我的情况下不起作用。
我在 UserAuthAPIView class 中有很多方法,我想为所有这些方法创建 url。
例如
127.0.0.1:8000/api
127.0.0.1:8000/api/createuser
127.0.0.1:8000/api/login
127.0.0.1:8000/api/<pk>/viewuser
urls.py
from django.conf.urls import url
from UserAPI.api import views
from UserAPI.api.views import UserAuthAPIView
urlpatterns = [
url(r'^$', UserAuthAPIView.as_view({'get': 'list'}), name='user-list'),
url(r'createuser/$', views.UserAuthAPIView.createuser, name='user-create'),
#url(r'userlogin/$', views.UserAuthAPIView.userlogin, name='user-login'),
]
views.py
class UserAuthAPIView(ModelViewSet):
queryset = UserModel.objects.all()
serializer_class = ListViewSerializer
def get_object(self, queryset=None):
return self.request.user
@action(methods=['post'], detail=False, permission_classes=[AllowAny], serializer_class=UserSerializer)
def createuser(self, request, *args, **kwargs):
data = request.data
serializer = UserSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({ "status" : "user created successfully"}, status=HTTP_201_CREATED)
路由器在视图集上执行一些操作,特别是添加从 http 动词到相关函数的映射。
您需要为您的操作做类似的事情:
urlpatterns = [
url(r'^$', UserAuthAPIView.as_view({'get': 'list'}), name='user-list'),
url(r'createuser/$', views.UserAuthAPIView.as_view({'post': 'createuser'}), name='user-create'),
]
您在 url 中以错误的方式调用了 Viewset。你需要这样做:
router = routers.DefaultRouter()
router.register(r'auth', UserAuthAPIView)
urlpatterns = [
url(r'^', include(router.urls)),
]
或
urlpatterns = [
url(r'createuser/$', UserAuthAPIView.as_view({'post':'createuser'}),
]
我正在使用路由器创建 url,现在我想为我的 api 创建 url,但问题是,我收到错误
createuser() missing 1 required positional argument: 'request'missing 1 required positional argument: 'request'
我在 UserAuthAPIView class 中的所有方法都遇到了同样的错误,我已经阅读了关于 Whosebug 的解决方案,但它们在我的情况下不起作用。
我在 UserAuthAPIView class 中有很多方法,我想为所有这些方法创建 url。
例如
127.0.0.1:8000/api
127.0.0.1:8000/api/createuser
127.0.0.1:8000/api/login
127.0.0.1:8000/api/<pk>/viewuser
urls.py
from django.conf.urls import url
from UserAPI.api import views
from UserAPI.api.views import UserAuthAPIView
urlpatterns = [
url(r'^$', UserAuthAPIView.as_view({'get': 'list'}), name='user-list'),
url(r'createuser/$', views.UserAuthAPIView.createuser, name='user-create'),
#url(r'userlogin/$', views.UserAuthAPIView.userlogin, name='user-login'),
]
views.py
class UserAuthAPIView(ModelViewSet):
queryset = UserModel.objects.all()
serializer_class = ListViewSerializer
def get_object(self, queryset=None):
return self.request.user
@action(methods=['post'], detail=False, permission_classes=[AllowAny], serializer_class=UserSerializer)
def createuser(self, request, *args, **kwargs):
data = request.data
serializer = UserSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({ "status" : "user created successfully"}, status=HTTP_201_CREATED)
路由器在视图集上执行一些操作,特别是添加从 http 动词到相关函数的映射。
您需要为您的操作做类似的事情:
urlpatterns = [
url(r'^$', UserAuthAPIView.as_view({'get': 'list'}), name='user-list'),
url(r'createuser/$', views.UserAuthAPIView.as_view({'post': 'createuser'}), name='user-create'),
]
您在 url 中以错误的方式调用了 Viewset。你需要这样做:
router = routers.DefaultRouter()
router.register(r'auth', UserAuthAPIView)
urlpatterns = [
url(r'^', include(router.urls)),
]
或
urlpatterns = [
url(r'createuser/$', UserAuthAPIView.as_view({'post':'createuser'}),
]