Django:即使在调用.is_valid之后也无法访问cleaning_data

时间:2012-08-07 23:14:57

标签: python django

我开始尝试清理我的一些代码,并且在测试时,我一直遇到这个错误:'log_in' object has no attribute 'cleaned_data'作为一个背景,代码检查提交两个表单中的哪一个({{ 1}})然后进行一些验证,例如检查它是某个主机上的电子邮件地址。它返回html对象,这些对象为调用页面的javascript提供指令(例如显示其他表单或显示错误)。这是一个非常简单的没有JSON的ajax,因为该站点非常小且流量非常低(每天最多100个用户。这不太可能)

log_in_is_new_form()

完整错误:

def log_in_pass_match(form):
    cleaned = form.cleaned_data
    if cleaned['password'] == cleaned['password2']:
        return true
    else:
        return false

def log_in_is_bbn(form):
    email_bbn = form.cleaned_data['username'].split("@")
    if 'bbns.org' in email_bbn:
        return True
    else:
        return False

def log_in_is_new_form( post):
    if "TN" in post:
        return True
    else:
        return False

def log_in_already_user(form):
    form.is_valid
    user_object = User.objects.filter(email = form.cleaned_data['username'])
    if user_object.exists():
        return True
    else:
        return False

def log_in_send_act(form):
    cleaned = form.cleaned_data['username']
    msg = "sfsd"
    send_mail('Activate', msg, 'michaelrgoldfine@gmail.com', [cleaned['username']], fail_silently=False)
    new_user_object = User.objects.create_user(
        username=cleaned_info_new['username'],
        password=cleaned_info_new['password'],
        email=cleaned_info_new['username']
    )


def user_log_in(request):
    error = []
    form = log_in(request.POST)
    if not log_in_already_user(form):
        form = new_user(request.POST)
        if log_in_is_new_form():
            form_is_valid = True
            other_is_valid = True
            if form.is_valid():
                if log_in_is_bbn(form = form) and log_in_pass_match(form = form):
                    other_is_valid = True
                else:
                    other_is_valid = False
            else:
                form_is_valid = False

            if form_is_valid and other_is_valid:
                msg = "In order to activate your account at Knights of the Round Table, please click on this link:"
                try:
                    user_object = User.objects.create_user(
                        username=cleaned_info_new['username'],
                        password=cleaned_info_new['password'],
                        email=cleaned_info_new['username']
                    )
                    log_in_send_act(form = form)
                    new_user_profile = user_object.get_profile()
                    new_user_profile.pen_name = form.cleaned_data['pen_name']
                    new_user_profile.activated = False;
                    new_user_profile.save()
                    return HttpResponse("not_act")
                except:
                    error.append("Error Sending Email")
            else:
                if not other_is_valid and log_in_is_new_form(request.POST):
                    if log_in_is_bbn(form = form):
                        error.append('BBN email addresses only: [first initial][last name]@bbns.org.')
                    if log_in_pass_match(form = form):
                        error.append('Passwords do not match')
                for n in form._errors:
                    for e in form._errors[n]:
                        error.append(e)
        else:
            return HttpResponse("n_usr")
    else:
        if form.is_valid():
            if log_in_already_user():
                logged_in_user = auth.authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password'])
                if loged_in_user is not None:
                    if user_object[0].get_profile().activated:
                        auth.login(request, logged_in_user)
                        return HttpResponseRedirect("")
                    else:
                        return HttpResponse("not_act")
                else:
                    error.append('Password Incorrect')
    errors_template = Template("{% for e in errors %}<li>{{ e }}</li> {% endfor %}")
    errors_html = errors_template.render(Context({'errors':error}))
    return HttpResponse(errors_html)

1 个答案:

答案 0 :(得分:1)

您实际上并未在此处致电is_valid

form.is_valid # missing the call ()