其余框架“ get()缺少1个必需的位置参数” [英] rest-framework "get() missing 1 required positional argument"

查看:117
本文介绍了其余框架“ get()缺少1个必需的位置参数”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将GET参数'pk'传递给Django其余框架。



浏览器



< a href = https://i.stack.imgur.com/5sdPR.png rel = nofollow noreferrer>



,但是在我的view.py中,我将GET方法设置为接收 pk参数。



views.py





它是urls.py代码:





还有另一个问题,如果我在pycharm中使用object对象方法对对象建模,则会抛出异常,例如:





但是我的朋友没有发生这种异常。他使用pycharm 2017.4(macOS)

  cateloydata = category.objects.all()

我的pycharm版本:pycharm 2017.2
python版本3.6
django版本1.11.7



谢谢大家。



很抱歉,发布图片需要至少10个声誉。因此,我的问题撰写非常糟糕。



感谢!

解决方案

在向URL添加参数时,必须在方法定义中添加额外的参数,例如:

 #个URL .py 
url(r'^ questions /(?P< pk> [\w:|-] +)/ $',TheView.as_view(),name ='view')

在上面的网址中,您传递的是网址参数(pk),因此您必须在方法中接收它:

 #views.py 
class TheView(APIView):
def get(自身,请求,pk):
...

但是在您的情况下,您希望通过查询参数传递数据。

 #urls.py 
url(r'^ questions / $',TheView.as_view(),name = 'view')

因此您不必在方法声明中接收它,请使用: / p>

def get(self,request):
pk = request.GET.get('pk')



相反。


I want transmit a GET parameters 'pk' to django rest-framework.

Browser

but in my view.py I was setting my GET method to receive ‘pk’ parameters.

views.py

It's urls.py code:

and There is another one question,if I models object use 'objects' method in the pycharm,were throw an exception,such as:

but my friend was not happen this exception. He use pycharm 2017.4(macOS)

cateloydata = category.objects.all()

my pycharm version:pycharm 2017.2 python version 3.6 django version 1.11.7

Thank everyone.

and I'm sorry, I need at least 10 reputation to post images. So my question composing is very bad.

感谢!

解决方案

When you are adding params to your url, you have to add an extra param to your method definition, like this:

# urls.py
url(r'^questions/(?P<pk>[\w:|-]+)/$', TheView.as_view(), name='view')

In the url above, you are passing a url param (pk) so you have to receive it in the method:

# views.py
class TheView(APIView):
   def get(self, request, pk):
     ...

But in your case, you want to pass data by query params.

# urls.py
url(r'^questions/$', TheView.as_view(), name='view')

so you don't have to receive it in the method declaration, use:

def get(self, request): pk = request.GET.get('pk')

instead.

这篇关于其余框架“ get()缺少1个必需的位置参数”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆