2016-07-25 127 views
0

我有以下代碼:訪問類變量 - Django的

class MyView(View): 
    var2 = Choices.objects.get(id=1) 
    my_strings = ['0','1','2','3'] 

    @login_required 
    def myfunction(self,request): 

     return render(request, 
       'app/submit.html',{'my_strings':my_strings, 'var2':var2}) 

我想訪問「VAR2」和「my_string」變量和模板submit.html顯示它們。如果我只使用該功能而不將其放入課堂,則一切正常。但是在課堂上它顯示錯誤。

任何人都可以告訴我如何訪問「myfunction」中的「var2」和「my_string」類變量嗎?

+3

你完成了所有的django教程嗎? https://docs.djangoproject.com/en/1.9/intro/tutorial03/ –

+0

有人發佈了一個答案,但現在被刪除?爲什麼?這是正確的嗎? –

回答

1

你必須使用自我。在類變量前面。在基於類的觀點

你的函數名稱應符合什麼樣的HTTP方法您嘗試使用(GET,POST等)

@login_required 
def get(self,request): 

    return render(request, 
      'app/submit.html',{'my_strings':self.my_strings, 'var2':self.var2}) 

也請閱讀: https://docs.djangoproject.com/en/1.9/topics/class-based-views/intro/

+0

我這樣做,但它顯示一個錯誤: __init __()需要1位置參數,但2給出 – Tim

+0

stacktrace?需要一些更多的信息。 – Eska

0

你不」不用爲了編寫自定義功能分派的請求...... Django的內部有GET和POST方法,這樣做......並處理需要登錄也是首選的方法是method_decorator

from django.utils.decorators import method_decorator 

@method_decorator(login_required, name='dispatch') 
class MyView(View): 

    string = "your string" 

    def dispatch(self, *args, **kwargs): 
     return super(MyView, self).dispatch(*args, **kwargs) 

    def get(self, request): 
     return render(request, 'template', {'string': self.string}) 
+0

@tim是否有效? –