Django实现表单登录

在web开发过程中,几乎所有的网站项目都会涉及到用户的登录功能,该功能可以用html中的form标签实现一个登录框,输入数据金进行信息的绑定。然而,在这个“达则兼济天下”的Django框架中,丰富的组件为我们减少了很多工作,其中一个名为forms的模块就可以从python代码的层面,实现表单。


用户登录的流程如图:
这里写图片描述

  1. 创建一个Django项目Test,创建应用account(过程略)
  2. 编写登录的前端页面 ./templates/account/login.html
  3. 3.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>Input your username and password</p>
<form action="." method="post">
    {% csrf_token %}
    {{ forms.as_p }}
    <input type="submit" value="Login">
</form>
</body>
</html>
 并在setting.py中添加模板路径
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
  1. 在./account目录创建一个文件forms.py
from django import forms

class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

4.编写视图函数

from django.contrib.auth import authenticate, login
from django.http import HttpResponse
from django.shortcuts import render

from account.forms import LoginForm


def user_login(request):
    if request.method == "POST":
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            cd = login_form.cleaned_data
            user = authenticate(username=cd['username'],password=cd['password'])

            if user:
                '''用户登陆后,Django会自动调用默认的session应用,
                    将用户的id存至session中,通常情况下,login与authenticate
                    配合使用'''
                login(request,user)
                return HttpResponse('成功登录')
            else:
                return HttpResponse('登录失败')
        else:
            return HttpResponse("输入不合法")

    if request.method == "GET":
        login_form = LoginForm()
        return render(request,'account/login.html',{"forms":login_form})
  1. 迁移数据文件,启动服务即可
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值