2017-11-28 6 views
0

GETパラメータ 'pk'をdjango rest-frameworkに送信します。rest-framework "get()missing 1必須の位置引数"

ブラウザ

enter image description here

が、私のview.pyに私が「PK」パラメータを受け取るために私のGETメソッドを設定しました。

views.py

​​

それはurls.pyコードです:

enter image description here

と私のモデルはpycharmで「オブジェクトのメソッドを使用するオブジェクトの場合は、別の一つの質問があり、次のような例外をスローしました。

enter image description here

しかし、私の友人はこの例外が発生しませんでした。 pycharm 2017.2 Pythonのバージョン1.11.7

みんなありがとう3.6 Djangoのバージョン:彼はpycharm 2017.4(MacOSの)

cateloydata = category.objects.all() 

私pycharmバージョンを使用しています。

と申し訳ありませんが、画像を投稿するには少なくとも10の評判が必要です。だから私の質問構成は非常に悪いです。 !

感谢

+0

コードを投稿するために画像を使用しないでください。 – Micho

+0

あなたのアドバイスをお寄せいただきありがとうございます。私はちょうど前にStackOverflowを使用しています。私はそれに注意を払うでしょう – notyeat

+0

変更urls.py => url(r '^ question /(?P \ w +)/ $'、views.QueryQuestion.as_view ))、 –

答えて

0

あなたのURLへのparamsを追加する場合、あなたはこのように、あなたのメソッドの定義に渡すパラメータを追加する必要があります。上記のURLで

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

を、あなたが渡しています

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

をしかし、あなたの場合には、クエリーのparamsでデータを渡したい:URLのPARAM(PK)あなたが方法でそれを受け取ることがあります。

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

ので、あなたは、メソッドの宣言、使用中にそれを受信する必要はありません。代わりに

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

+0

これは良い解決策ですが、私のコードは公式の文書の例と似ていますので、私は混乱しています(私は公式文書の例を参照しています:http://www.django-rest-framework.org/tutorial/3-class- based-views /) – notyeat

+0

私はその違いを明確にするために答えを編集するだけです – arcegk