gpt4 book ai didi

python - Django 脆皮表单错误消息

转载 作者:行者123 更新时间:2023-12-01 04:58:20 24 4
gpt4 key购买 nike

我对 Python 和 django 非常陌生。我目前遇到一个无法克服的问题。我已尝试阅读所有文档并进行谷歌搜索,但到目前为止还没有任何结果。

我需要使用一个非常自定义的登录表单。到目前为止,所有代码都可以工作。我只想对用户进行身份验证(效果很好),但如果他们输入了不正确的详细信息,我想在表单上显示一条错误消息,指出无效的登录详细信息,而不是返回 HttpResponse,但我似乎无法弄清楚到底是如何在像这样的脆皮表单上显示这样的身份验证错误。

任何帮助将不胜感激

哦,是的,如果这有什么区别的话,这是 python 3.4

这是我的 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',)

这是我的观点.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 is not None:
if redirect_url is None:
redirect_url='/home'

login(request, user)
return HttpResponseRedirect(redirect_url)
return HttpResponse("Invalid login details supplied.")
return render_to_response(template_name, {'crispy_form': loginForm}, context_instance=RequestContext(request))
else:
loginForm = UserLoginForm()
return render_to_response(template_name, {'crispy_form': loginForm}, context_instance=RequestContext(request))

最后,这是我的模板:

{% extends "master.html" %}

{% load crispy_forms_tags %}

{% block content %}
<div class="inner-block">
<h1>Log in to your account</h1>
{% crispy crispy_form crispy_form.helper %}
</div>
{% endblock %}

谢谢

最佳答案

使用消息系统

from django.contrib import messages

...
else:
messages.error(request, "Your error message")
loginForm = UserLoginForm()
....

检查 django.contrib.messagges 文档。

关于python - Django 脆皮表单错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26857686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com