2017-06-15 167 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

我改变了代码,它仍然没有给我想要的输出。 –