源码下载:https://files.cnblogs.com/files/hardykay/login.zip

新建项目(我使用pycharm开发,也可以使用如下命令建立项目 )

cmd命令行,前提需要安装django和配置系统环境变量,这里我就跳过了:

django-admin startproject login

项目建好后通过cd 进入到项目目录执行以下命令:

python manage.py startapp app01

  

需求分析

  一个登录注册系统基本包含哪些功能呢?

  1、首页

  2、登录/注册页面

  3、验证登录信息

  4、验证注册信息

  5、注销模块

概要设计

  数据库设计ER图

   

urls.py文件

urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index),
path('registerView/', views.registerView),
path('register/', views.register),
path('login/', views.login),
path('accounts/login/', views.logout),
]

setting.py文件

# 开发阶段放置项目自己的静态文件
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'statics'),
)
# 执行collectstatic命令后会将项目中的静态文件收集到该目录下面来(所以不应该在该目录下面放置自己的一些静态文件,因为会覆盖掉)
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

数据库设计

  1、models.py

from django.db import models

# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
email = models.CharField(max_length=60)
password = models.CharField(max_length=20) def __str__(self):
print(self.username)

  2、建立数据库

# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate

views.py功能模块设计

from django.shortcuts import render,HttpResponseRedirect
from django.contrib import auth
from app01.myform import User as FUser
from app01.models import User
from django.contrib.auth.decorators import login_required
# Create your views here. def index(request):
user = request.session.get('user',False) return render(request,'app01/index.html',{'user':user})
#显示页面
def registerView(request):
user = request.session.get('user', False)
print(user)
if not user:
return render(request, 'app01/login.html')
else :
return HttpResponseRedirect('/index/') #注册
def register(request):
check = False
if request.method == 'POST':
form = FUser(request.POST)
if form.is_valid():
#print(form.cleaned_data)
user = User(**form.cleaned_data)
user.save()
check = True
return render(request, 'app01/immediate.html',{'check':check}) return HttpResponseRedirect('/index/') #登录
def login(request): user = request.POST['username']
password = request.POST['password']
result = User.objects.get(username=user,password=password) if not result:
return HttpResponseRedirect('/registerView/')
else :
request.session['user'] = user
return HttpResponseRedirect('/index/') #注销
def logout(request):
auth.logout(request)
return HttpResponseRedirect('/index/')

完整的views.py

首页模块设计(index函数)

def index(request):
user = request.session.get('user',False) return render(request,'app01/index.html',{'user':user})

后台代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if not user %}
<a href="/registerView/">注册/登录</a>
{% else %}
您已经登录<a href="/accounts/login/">注销</a>
{% endif %}
</body>
</html>

前台代码

前后台是一起的,这里用了两个系统提供的功能模块:1、user = request.session.get('user',False)。2、return render(request,'app01/index.html',{'user':user})

1的作用是去键为user的session值,如果不存在则返回False,2的作用是将变量的值写入到模板,第二个参数是模板路径,第三个参数是需要渲染的字典。

登录/注册显示页面

def registerView(request):
user = request.session.get('user', False)
print(user)
if not user:
return render(request, 'app01/login.html')
else :
return HttpResponseRedirect('/index/')

后台代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="/static/css/style.css" rel='stylesheet' type='text/css' />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
<!--webfonts-->
<!--//webfonts-->
</head>
<body>
<div class="main">
<div class="header" >
<h1>Login or Create a Free Account!</h1>
</div>
<p>Lorem iopsum dolor sit amit,consetetur sadipscing eliter,sed diam voluptua.At vero eso et accusam et justo duo dolores et ea rebum. </p>
<form action="/register/" method="POST">
<ul class="left-form">
<h2>New Account:</h2>
<li>
<input type="text" name="username" placeholder="Username" required/>
<a href="#" class="icon ticker"> </a>
<div class="clear"> </div>
</li>
{% csrf_token %}
<li>
<input type="text" name="email" placeholder="Email" required/>
<a href="#" class="icon ticker"> </a>
<div class="clear"> </div>
</li>
<li>
<input type="password" name="password" placeholder="password" required/>
<a href="#" class="icon into"> </a>
<div class="clear"> </div>
</li>
<li>
<input type="password" placeholder="password" required/>
<a href="#" class="icon into"> </a>
<div class="clear"> </div>
</li>
<label class="checkbox"><input type="checkbox" name="checkbox" checked=""><i> </i>Please inform me of upcoming w3layouts, Promotions and news</label>
<input type="submit" onClick="myFunction()" value="Create Account">
<div class="clear"> </div>
</ul>
</form>
<form action="/login/" method="post">
<ul class="right-form">
{% csrf_token %}
<h3>Login:</h3>
<div>
<li><input type="text" name="username" placeholder="Username" required/></li>
<li> <input type="password" name="password" placeholder="Password" required/></li>
<h4>I forgot my Password!</h4>
<input type="submit" onClick="myFunction()" value="Login" >
</div>
<div class="clear"> </div>
</ul>
<div class="clear"> </div> </form> </div>
<!-----start-copyright---->
<div class="copy-right">
<p>Template 2014. More Templates <a href="http://www.cssmoban.com/" target="_blank" title="模板之家">模板之家</a> - Collect from <a href="http://www.cssmoban.com/" title="网页模板" target="_blank">网页模板</a></p>
</div>
<!-----//end-copyright----> </body>
</html>

前台代码

验证注册信息模块

  1、建立form系统验证

from django import forms

class User(forms.Form):
username = forms.CharField(max_length=50)
email = forms.CharField(max_length=60)
password = forms.CharField(max_length=20)

myform.py

  2、后台代码

def register(request):
check = False
if request.method == 'POST':
form = FUser(request.POST)
if form.is_valid():
#print(form.cleaned_data)
user = User(**form.cleaned_data)
user.save()
check = True
return render(request, 'app01/immediate.html',{'check':check}) return HttpResponseRedirect('/index/')

验证登录信息模块

def login(request):

    user = request.POST['username']
password = request.POST['password']
result = User.objects.get(username=user,password=password) if not result:
return HttpResponseRedirect('/registerView/')
else :
request.session['user'] = user
return HttpResponseRedirect('/index/')

注销

def logout(request):
auth.logout(request)
return HttpResponseRedirect('/index/')

    

django简单实现注册登录模块的更多相关文章

  1. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  2. 详细讲解:使用tp3.2.3完成简单的注册登录功能

    使用3.2.3进行了一个简单不过的注册登录功能,界面介绍: 1.注册: 2.登录: 3.登录成功后: 没错,就是简单的让你特别容易上手,上面运用到的知识有: (1)自动验证.自动完成 (2)sessi ...

  3. 从微信小程序到鸿蒙js开发【08】——表单组件&注册登录模块

    目录: 1.登录模块 2.注册模块 3.系列文章导读 牛年将至,祝大家行行无bug,页页so easy- 在微信小程序中,提供了form组件,可以将input.picker.slider.button ...

  4. 关于Django auth注册登录模块的具体使用

    from django.urls import path from . import views urlpatterns = [ #主页,用来显示类别等其他数据 path('',views.index ...

  5. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  6. ASP.NET会员注册登录模块(MD5加密,Parameters防止SQL注入,判断是否注册)

    MD5加密,Parameters防止SQL注入: protected void btnLog_Click(object sender, EventArgs e)     {         //获取验 ...

  7. JAVAWEB 项目注册登录模块问题总结

    tomcat: 假如tomcat服务器启动出现错误,那就可能是servlet或代码的原因 tomcat服务器出现不能访问页面的情况,可以在eclipse tomcat服务器设置里设置为共享服务器模式 ...

  8. Django:使用django自带的登录模块登录后会默认登录到 /accounts/profile 下的问题

    django settings中LOGIN_REDIRECT_URL默认重定向到/accounts/profile下,可通过配置修改

  9. django 简单会议室预约(4)

    基本的配置已经完成了,来看看最重要的views.py 先看看简单的注册登录功能,在django里有一个专门的模块用来验证用户信息 :所以只需要调用就好了: #-*-coding:utf-8 -*- f ...

随机推荐

  1. Spring之AOP简单demo

    1.加入JAR包.出了Spring自身的Jar包还要一些依赖的JAR包.不然会报ClassNotFound. Student.java package com.lubby.bean; import o ...

  2. NGUI的窗体的推动和调节大小(drag object和drag resize object)

    一,我们先添加一个sprite,给sprite添加一个背景图片,然后attach添加一个box Collider,但是这时我们右键attach是找不到drag object的我们需要在add comp ...

  3. NodeJs的CommonJS模块规范

    前言 本人记忆力一般,为了让自己理解<深入浅出Node.js-朴灵>一书,会在博客里记录一些关键知识,以后忘了也可以在这里找到,快速回想起来 Node通过require.exports.m ...

  4. OC学习--OC中的类--类的定义,成员变量,方法

    1. 类的定义 >用关键字@interface进行声名  @end 结束 >所有的类有一个基类NSobject >类名 也是标示符 第一个字母大写 如果多个字母组成 每个单词的首字母 ...

  5. 使用纯php构建一个简单的PHP服务器

    使用原生PHP构建一个简单的PHPWeb服务器 1.目录机构 webserver --src -- Response.php -- Server.php -- Request.php -- vendo ...

  6. 转载他人的efk搭建文章后边有链接和地址

    EFK教程 - EFK快速入门指南   通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 目录 ▪ 用途▪ 实验架构▪ E ...

  7. 如何触发react input change事件

    页面用react来进行开发的,想触发react组件里面input的change事件,用Jquery的trigger来触发没有效果,必须使用原生的事件来进行触发. var event = new Eve ...

  8. dubbo所用到的技术

    服务注册:zookeeper 协议:dubbo  Hessian  Rmi 网络编程:netty 动态代理:jdk和Javassist 序列化:Hessian  Dubbo  Json  Java S ...

  9. HTTP协议-get请求与post请求的区别

    区别: 参数:get通过url进行传递:post放在request body中 长度:get请求在url的长度是有限制的:而post没有(其实这个限制是来自浏览器和web服务器对url的限制,并不是h ...

  10. 【leetcode】472. Concatenated Words

    题目如下: Given a list of words (without duplicates), please write a program that returns all concatenat ...