Django实现用户登录注册


本文将会介绍小白如何完成一个用户登录注册系统

新建一个Django项目,名字为login_register,并且使用命令manage.py startapp.User(名字自己随便起)

最终django项目结构如下图所示

 

 forms.py是之前通过form表单写的注册功能,可以忽略这个py文件

from django.urls import path
from User import views
urlpatterns = [
    #    path('admin/', admin.site.urls),
        path('login/',views.login,name ='login'),
        path('index/',views.index,name = 'index'),
        path('register/',views.register,name = 'register'),
]
urls.py
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <h1>
        <p style="text-align:center">登录</p>
    </h1>
    <center>
    <form action="" method="post">
        {% csrf_token %}
        <p style="text-align:center">用户:<input type="text" name="username" /></p>
        <p style="text-align:center">密码:<input type="password" name="password"/></p>
        <p style="text-align:center"> <input type="submit" value="登录" />

          <p style="color: #ff0000;text-align: center">{{error}}</p>

</form>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
    <h1>
        <p style="text-align:center">新用户注册</p>
    </h1>
    <center>
    <form action="" method="post">
        {% csrf_token %}
        <p style="text-align:center">用户:<input type="text" name="username" /></p>
        <p style="text-align:center">邮箱:<input type="text" name="email"/> </p>
        <p style="text-align:center">密码:<input type="password" name="password"/></p>
        <p style="text-align:center"> <input type="submit" value="注册" />

          <p style="color: #ff0000;text-align: center">{{error_name}}</p>

</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎登陆</h1>
</body>
</html>
index.html
from django.db import models


# Create your models here.
class WangUser(models.Model):
    username = models.CharField(max_length=32,unique=True)  #  用户名
    password = models.CharField(max_length=32)  # 密码
    email = models.CharField(max_length=32)   # 邮箱
User/models.py
from django.shortcuts import render, redirect,HttpResponse
from django.shortcuts import render
# Create your views here.
from User import models
from .forms import UserReg


def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        obj_user = models.WangUser.objects.filter(username=username, password=password)
        if obj_user:
            return redirect('index')
        error = '用户名和密码错误'
    return render(request, 'login.html', locals())



def index(request):
    return render(request, 'index.html')



def register(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        email = request.POST.get('email')
        password = request.POST.get('password')
        user_list = models.WangUser.objects.filter(username=username)
        error_name = []
        if user_list:
            error_name = '用户名已经存在'
            return render(request,'register.html',{'error_name':error_name})
        else:
            username = models.WangUser.objects.create(username=username,password=password,email=email)
            username.save()
            return redirect('login')
    return render(request,'register.html')
User/views.py

切记配置好settings中的数据库,我用的是mysql,配置好后在数据库中创建相应的表。

settings Mysql设置代码

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',  # 使用mysql数据库的都是这个,不变

        'NAME': 'XXXXX',  # 使用的数据库名称

        'USER': 'XXXX',  # 登录mysql数据库的用户名称

        'PASSWORD': 'XXXXXX',  # 登录mysql数据库的用户密码

        'HOST': '127.0.0.1',  # 表明使用的是本地mysql数据库

        'PORT': '3306',  # 端口号

        'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}  # 指明innodb设不设置都可以,视情况而定
    }

}

最后makemigration和migrate迁移数据库后即可

接下来测试一下

 

账号Joker

邮箱Joker@126.com

密码123456

点击注册后会跳转到登录界面

 

 咱们现在回到数据库看看有没有咱们刚才注册的数据

 

 然后登陆

 

 

 

再次注册相同的账号

 

 

 会显示用户名已经存在,我们到login界面,输入一个错误的账号密码

 

 

 所有功能完成,登录注册界面就很简约,重要就是逻辑方面,前端就不深做了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM