Saturday 15 August 2015

python - Django crispy forms error message -



python - Django crispy forms error message -

i new python , django. , having issue cannot overcome. have tried reading docs , googling, nil far.

i have custom login form need use. code there works far. want authenticate user (which works fine), if come in wrong details, want show error message on form saying invalid login details instead of returning httpresponse, cannot seem figure out how display auth error on crispy form this.

any help much appreciated

oh yes, , python 3.4 if makes difference

this forms.py:

class userloginform(forms.modelform): email = forms.charfield( label="your email address", max_length=80, required=true, ) password = forms.charfield( label="your password", required=true, ) def __init__(self, *args, **kwargs): super(userloginform, self).__init__(*args,**kwargs) self.helper = formhelper(self) self.helper.form_id = 'form-login' self.helper.form_class = 'form-login' self.helper.form_method = 'post' self.helper.form_action = 'login' self.helper.field_class = 'form-control input-lg' self.helper.form_show_errors = true self.helper.layout = layout( field('email', template='crispy/login_input_email.html'), field('password', template='crispy/login_input_password.html'), ) self.helper.layout.append(submit('login', 'log me in', css_class='btn btn-primary btn-lg')) class meta: model = user fields = ('email', 'password',)

this views.py:

def login_view(request, template_name='login.html'): redirect_url = request.get.get('next') if request.method=='post': loginform = userloginform(request.post) if loginform.is_valid(): username = loginform.cleaned_data.get('email') password = loginform.cleaned_data.get('password') user = authenticate(username=username, password=password) if user not none: if redirect_url none: redirect_url='/home' login(request, user) homecoming httpresponseredirect(redirect_url) homecoming httpresponse("invalid login details supplied.") homecoming render_to_response(template_name, {'crispy_form': loginform}, context_instance=requestcontext(request)) else: loginform = userloginform() homecoming render_to_response(template_name, {'crispy_form': loginform}, context_instance=requestcontext(request))

and lastly, template:

{% extends "master.html" %} {% load crispy_forms_tags %} {% block content %} <div class="inner-block"> <h1>log in account</h1> {% crispy crispy_form crispy_form.helper %} </div> {% endblock %}

thanks

use messaging system

from django.contrib import messages ... else: messages.error(request, "your error message") loginform = userloginform() ....

check on django.contrib.messagges doc.

python django django-crispy-forms

No comments:

Post a Comment