2017-06-05 83 views
0

我的一個網址如下:從請求獲取url變量

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

鑑於這種CBV:

Class Whatever(View): 

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

我需要訪問在裝飾添加my_id。什麼是完成這個最好的方法? 也許,覆蓋初始並從請求它request.path

+0

該職位方法採用可選的參數'後(個體經營,要求,*指定參數時, ** kwargs):'您可以打印'args'來獲取my_id –

+0

向我們顯示'custom_decorator'代碼 –

+0

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

回答

0

你應該叫你的參數在你的網址:

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