簡體   English   中英

在基於類的視圖中獲取 url kwargs

[英]Get url kwargs in class based views

我需要在基於類的視圖中檢索寫在 url 中的 pk 的值:

path('<int:pk>/data/', views.DataView.as_view(), name='data'),

但是,我到處看到的是在getpost等方法的定義中檢索到的 pk。

我想要的是能夠使用它來定義我的類變量,因為我需要在我的類中的每個方法中從這個 pk 中獲取相同的值,如下所示:

class DataView(ContextMixin, UpdateView):
    pk = get_pk_from_url
    ...
    value = ...

    def get(self, request, *args, **kwargs):
        value = self.value
        # Do something with value

    def post(self, request, *args, **kwargs):
        value = self.value
        # Do something with value

我在寫這個問題的時候有個想法,就是定義一個方法來做我需要的,然后在我的其他方法中調用這個方法。

class DataView(ContextMixin, UpdateView):

    def get_value(self):
        self.pk = self.kwargs['script_id']
        ...
        self.value = ...

    def get(self, request, *args, **kwargs):  
        self.get_value()
        value = self.value
        # Do something with value

    def post(self, request, *args, **kwargs):
        self.get_value()
        value = self.value
        # Do something with value

但是,我不知道是否還有其他方法,這就是為什么我仍然想問我的問題。

感謝@WillemVanOnsem 的評論,我能夠使用setup方法( 此處的文檔)來定義我需要定義的所有內容。 所以最后我得到了類似的東西:

class DataView(View):

    def setup(self, request, *args, **kwargs):
        self.pk = kwargs['pk']
        ...
        self.value = ...
        return super().setup(request, *args, **kwargs)


    def get(self, request, *args, **kwargs):
        value = self.value
        

    def post(self, request, *args, **kwargs):
        value = self.value

setup方法在getpost之前被調用,在其中聲明的類屬性可以在其他方法中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM