要求

2017-06-05 13 views
0

私のいずれかのURLからURL変数は次のようになりなさい:要求

このCBV考える
url(r'^(?P<my_id>[0-9]+)/foo/', Foo.as_view()), 

:私はにアクセスする必要が

Class Whatever(View): 

    @custom_decorator(my_id) 
    def post(self, request, my_id): 
     # ... 

はデコレータでをmy_id。これを達成する最良の方法は何ですか? おそらく、の最初のを上書きし、それをrequest.pathから取るでしょうか?

+0

は、オプションの引数 'ポスト(自己、要求、*引数を取ります** kwargs): 'あなたはmy_idを取得するために' args'を出力できます。 –

+0

'custom_decorator'コードを表示します –

+0

@SardorbekImomaliev https://github.com/jsocol/django-ratelimit/blob/master/ratelimit/decorators。 py – loar

答えて

0

あなたのURLであなたのパラメータを命名する必要があります。その後、

url(r'^(?P<my_id>[0-9]+)/foo/', Foo.as_view()), 

そして、あなたのCBVでそれを使用する:メソッドを投稿

Class Whatever(View): 

@decorator(my_id) 
def post(self, request, my_id, *args, **kwargs): 
    self.kwargs['my_id'] 
    ... 
+0

NameError:名前 'my_id'が定義されていません – loar

+0

私の悪い、 'self.kwargs ['my_id']'を使ってください。メソッドのシグネチャを変更することを忘れないでください: 'def post(self、request、my_id、** kwargs):'私は自分の答えを更新します。 – Thom

+0

私のカスタムデコレータでmy_idにアクセスすることはできません – loar