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

新建一个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界面,输入一个错误的账号密码

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

Django实现用户登录注册的更多相关文章

  1. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  2. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  3. 纯JSP实现用户登录注册,记事本

    没有美化,没有格式,没有样式 1.JSP登陆注册 将用户注册的信息保存在application对象中,用于登录时的验证. 首页如下: 如果未登录,在  session 中找不到 currentUser ...

  4. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  5. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  6. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  7. Django:用户登录实例

    Django:用户登录实例 一.源代码 1,login.html代码(登录界面): <!DOCTYPE html> <html lang="zh-CN"> ...

  8. javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  9. /*用户登录注册页面输入框的设置*/<span>的使用

    <!DOCTYPE html> /*用户登录注册页面输入框的设置*/ <html lang="en"> <head> <meta char ...

随机推荐

  1. sparksql解析流程

    1.sparkSql处理核心:Catalyst工作流程(本质:把sql.dataframe相结合,以树tree的形式来存储.优化) 2.catalyst工作流程 1)Parser(解析器):SqlPa ...

  2. 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发

    前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...

  3. JDBC分页查询及实现

    当数据过多时,一页之内是无法显示的,因此需要进行分页显示. (一)分页技术实现: 物理分页: - 在数据库执行查询时(实现分页查询),查询需要的数据--依赖数据库的SQL语句 - 在sql查询时,从数 ...

  4. SSH整合(二)

    SSH框架实现登录.新闻增删改查.树形菜单 项目结构 pom.xml 网不好不要一次引入太多,容易下不全 <project xmlns="http://maven.apache.org ...

  5. IPSec协议框架

    文章目录 1. IPSec简介 1.1 起源 1.2 定义 1.3 受益 2. IPSec原理描述 2.1 IPSec协议框架 2.1.1 安全联盟 2.1.2 安全协议 报文头结构 2.1.3 封装 ...

  6. ABP 极简入门教程(二 MVC方式显示数据)

    增加显示菜单 Sample.Web.MVC项目中找到startup目录打开SampleNavigationProvider.cs,根据现有内容添加以下内容 .AddItem( new MenuItem ...

  7. 加载映射文件几种方式和mapper接口注解执行sql语句

    一.加载映射文件几种方式 二.mapper接口注解执行sql语句 就将xml中的sql语句放到注解的括号中就可以,一般只用于简单的sql语句合适:

  8. python库--pandas--DataFrame

    转换    索引,迭代    运算符    功能应用,分组及窗口    计算/描述统计 重新索引/选择/标签操作    缺失数据处理    形状变换/排序/转置 组合/加入/合并    时间序列相关  ...

  9. Spring Boot中有多个@Async异步任务时,记得做好线程池的隔离!

    通过上一篇:配置@Async异步任务的线程池的介绍,你应该已经了解到异步任务的执行背后有一个线程池来管理执行任务.为了控制异步任务的并发不影响到应用的正常运作,我们必须要对线程池做好相应的配置,防止资 ...

  10. String底层使用是char数组还是byte数组

    结论:jdk1.8及以前String底层使用是char[],1.9开始使用byte[] jdk1.8 jdk13