- 在app在建立forms.py文件
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(required=True)
password = form.CharField(required=True,min_length=5)
这里的username和password必须和html网页的form表单的name属性相同,required表示i必填字段
2. 在views.py中引入文件
首先创建form实例
login_form = LoginForm(request.POST)
if login_form.is_valid():
pass
else:
return render(request, 'login.html', {'login_form': login_form})
#这里的form对象可以返回错误信息
在html网页可以根据数据进行判断
{% if login_form.errors.username %}
如果有错的话。。
{% endif %}
{% for key,error in login_form.errors.items %}
{{key}}--{{ error }}
{% endfor %}
例如下面的
from .forms import LoginForm
class LoginView(View):
def get(self, request):
return render(request, 'login.html', {})
def post(self, request):
login_form = LoginForm(request.POST)
if login_form.is_valid():
user_name = request.POST.get('username', '')
pass_word = request.POST.get('password', '')
user = authenticate(username=user_name, password=pass_word)
if user is not None:
login(request, user)
return render(request, 'index.html', {})
else:
return render(request, 'login.html', {'msg': '用户名或密码错误'})
else:
return render(request, 'login.html', {'login_form': login_form})
<form action="/login/" method="post" autocomplete="off">
<div class="form-group marb20 {% if login_form.errors.username %}errorput{% endif %}">
<label>用 户 名</label>
<input name="username" id="account_l" type="text" placeholder="手机号/邮箱" />
</div>
<div class="form-group marb8 {% if login_form.errors.username %}errorput{% endif %}">
<label>密 码</label>
<input name="password" id="password_l" type="password" placeholder="请输入您的密码" />
</div>
<div class="error btns login-form-tips" id="jsLoginTips">{% for key,error in login_form.errors.items %}{{ error }}{% endfor %}{{ msg }}</div>
<div class="auto-box marb38">
<a class="fr" href="forgetpwd.html">忘记密码?</a>
</div>
<input class="btn btn-green" id="jsLoginBtn" type="submit" value="立即登录 > " />
{% csrf_token %}
</form>