2017-06-15 73 views
0

我創建了一個具有登錄選項的表單。我想顯示在python控制檯中的用戶名標籤中給出的用戶名。 這裏是我的views.py文件:如何在django python控制檯中打印結果

from django.views.generic import TemplateView 
from django.shortcuts import render 
from app.forms import * 
class login(TemplateView): 
    template_name = 'app/login.html' 
    def clean(self): 
     form = RegistrationForm() 
     print form.cleaned_data['username'] 

以下是我的forms.py文件:

from django import forms 


class RegistrationForm(forms.Form): 
    username = forms.CharField(label='Username', max_length=30) 
    password = forms.CharField(label='Password', 
         widget=forms.PasswordInput()) 
    def clean_password(self): 
     username = self.cleaned_data['username'] 

這不打印我想要的東西。請幫我解決這個問題。

+0

可以請你提供你的整個代碼'登錄' –

+0

..我可以問爲什麼嗎?什麼不工作?它有什麼作用? – Sayse

+0

爲什麼你要在視圖中定義一個乾淨的方法?是什麼讓你認爲這會做任何事情? –

回答

2

如果你想處理您基於類的視圖的形式,你需要使用一個瞭解形式的基類。在你的情況下,FormView將是正確的。

除此之外,您需要重寫在渲染過程中實際調用的方法。你不能只是定義一個隨機方法,並期望它被調用。在表單驗證之後調用的FormView方法稱爲form_valid。所以:

class login(FormView): 
    template_name = 'app/login.html' 
    form_class = RegistrationForm 

    def form_valid(self, form): 
     print form.cleaned_data['username'] 
     return super(FormView, self).form_valid(form) 
+0

謝謝你。但它仍然沒有打印我在登錄表單中給出的用戶名 –

1

您無需提供POST數據創建一個新的Form對象:

form = RegistrationForm(data=self.request.POST) 

正如丹尼爾在他的評論說,clean方法很可能絕不會爲TemplateView。您可能需要使用FormView或簡單地使用View。您的clean_password功能最有可能不正確。它創建的局部變量username該功能後,簡單地丟棄:

def clean_password(self): 
    username = self.cleaned_data['username'] 
+0

我改變了代碼,它仍然沒有給我想要的輸出。 –