簡體   English   中英

Django CBV:get()和get_context_data()

[英]Django CBV : get() and get_context_data()

我想獲取有關get()get_context_data()類的一些指標,因為我遇到了問題,並且試圖理解原因。

我有一個Django DetailView ,可以顯示帶有多個查詢集的一些統計信息。 在同一個類中,我有一個query string ,其中顯示了來自get queryset的結果。

我的代碼如下所示:

class StatsView(DetailView):
    """ Create statistics pageview """
    template_name = 'app/stats.html'

    def get(self, request):
        return render(request, self.template_name, context)

    def set_if_not_none(self, mapping, key, value):
        if value is not None:
            if len(value) != 0:
                mapping[key] = value

    def get_context_data(self, **kwargs):
        return context_data

這樣, get_context_data()函數不起作用,但是當我在注釋中設置get()時,它可以正常工作。 我認為自己有一個小誤會。

也許我沒有使用好的django通用顯示視圖,或者不可能在同一類中一起使用get()get_context_data()

謝謝

我閱讀了Django文檔,但我想向您解釋

編輯:

我試圖將查詢集從get()方法傳遞給get_context_data() 然后我刪除了get()方法,通過TemplateView更改了DetailView ,它僅與get_context_data() 但是,如何在沒有get()方法的情況下添加“骨架”呢?

我正在嘗試將查詢集從get()方法傳遞給get_context_data()


class StatsView(DetailView):
    """ Create statistics pageview """
    template_name = 'app/stats.html'

    def get(self, request, *args, **kwargs):
        queryset = SampleModel.objects.all()
        return render(request, self.template_name, context=self.get_context_data(queryset=queryset))

    def set_if_not_none(self, mapping, key, value):
        if value is not None:
            if len(value) != 0:
                mapping[key] = value

    def get_context_data(self, **kwargs): qs = kwargs.get('queryset') # do something


如果您重寫的get_context_data()方法,建議將super()方法調用為

class StatsView(DetailView):
    # your code

    def get_context_data(self, **kwargs): data = super(StatsView, self).get_context_data(**kwargs) data.update({"foo": "bar"}) return data

我想獲得一些有關get()get_context_data()

我認為這已經很好回答了, 何時在Django中使用get,get_queryset,get_context_data?

暫無
暫無

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

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