一、使用已有登录功能

(1)进入Lib\sitepackages\django\contrib\admin\templates\registration下,将对应模板,复制到项目template模板中

(2)重写登录模板,且放入templates/account文件夹

(3)设计模型使用已有的User模型

(4)设计注册模型,使用已有的User模型,及进行新扩展

设计及代码开发步骤逻辑:设计完数据模型,编写表单类,创建视图函数,设置前端模板,设置URL,GET方法先展示前端模板,后POST方法编写表单类修改数据库,及存储数据库逻辑

1、设计数据模型

# models.py文件示例
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User,unique=True,on_delete=None)
birth = models.DateField(blank=True,null=True)
phone = models.CharField(max_length=11,null=True)
# createTime = models.DateTimeField(auto_now_add=True)
def __str__(self):
return 'user {}'.format(self.user.username)

2、编写表单类

account/目录下,新增forms.py文件

from django import forms
from django.contrib.auth.models import User
from account.models import UserProfile,UserInfo class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput) # widget=forms.PasswordInput密码文显示

3、编写视图函数

def user_login(request):
if request.method == "GET":
login_form = LoginForm()
return render(request,"account/login.html",{"form":login_form})
elif request.method == "POST":
pass

4、设置前端模板

注意:表单需要从视图函数,进行传递到模板

{% extends "base.html" %}
{% block title %}标题{% endblock %}
{% block content %}
{#内容#}
{#使用表单#}
<div class="container">
<form action="." method="POST">{%csrf_token%}
<div class="spadding">
<label for="{{ form.username.id_for_label }}" class="title">用户名:</label>
{{ form.username }}
</div>
<div class="spadding">
<label for="{{ form.password.id_for_label }}" class="title">密码:</label>
{{ form.password }}
</div>
<input type="submit" class="btn btn-block btn-primary" value="登录">
</form>
</div>
{% blockend %}
<style>
h1 {
color:#00BBFF;
}
//控制输入框左右对齐
.title {
float: left;
width: 70px;
text-align: left;
padding-right: 10px;
}
div.spadding {
margin: 10px;
padding-bottom: 10px;
width: 300px;
}
</style>

5、设置URL,从Lib\sitepackages\django\contrib\auth\urls.py里配置使用

path('newlogin/',auth_views.LoginView.as_view(template_name="account/login.html"),name="user_login"),
template_name=重新定向自定义模板
name=给路径命名

6、POST方法编写表单类修改数据库,及存储数据库逻辑

def user_login(request):

    if request.method == "GET":
login_form = LoginForm()
return render(request,"account/login.html",{"form":login_form})
elif request.method == "POST":
login_form = LoginForm(request.POST)
if login_form.is_valid():
user = authenticate(login_form.cleaned_data)
if user:
login(request,user)
return HttpResponse("您已经登录成功....")
else:
return HttpResponse("您的用户名或密码错误,请重新登录")
else:
login_url = reverse("account:user_login")
return redirect(login_url)

(四)注册登录--重用Django的更多相关文章

  1. Django+bootstrap+注册登录系统

    转自:https://www.cnblogs.com/robindong/p/9610057.html Robin_D 博客园 首页 新随笔 联系 订阅 管理 随笔 - 10  文章 - 0  评论 ...

  2. 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证

    1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...

  3. django简单实现注册登录模块

    源码下载:https://files.cnblogs.com/files/hardykay/login.zip 新建项目(我使用pycharm开发,也可以使用如下命令建立项目 ) cmd命令行,前提需 ...

  4. python相关注册登录方式

    1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...

  5. 基于 Django2 实现邮箱注册登录功能

    1. 开发环境 Python 3.6.5 Django 2.2 2. 项目功能 用户登录 邮箱注册 图形验证码 找回密码 修改密码 用户退出 3. 项目创建 首先创建项目: django-admin ...

  6. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  7. 如何设计一个 App 的注册登录流程?

    移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...

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

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

  9. vue2.0+koa2+mongodb实现注册登录

    前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...

随机推荐

  1. RequestMapping中produces属性作用

    注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json或者xml: @RequestMapping(value="/xxx",prod ...

  2. @atcoder - ABC133F@ Colorful Tree

    目录 @description@ @solution - 1@ @accepted code - 1@ @solution - 2@ @accepted code - 2@ @details@ @de ...

  3. Android Studio(二):快捷键设置、插件安装

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  4. Websocket 简单对话:静态网页与pycharm对话

    WebSocket websocket 是一种在单个Tcp连接上进行双全工通信的协议.websocket通信协议于2011年被IETF定为标准RFC6455,并 由RFc7936补充规范.WebSoc ...

  5. C# 比较两张图片是否完全相同

    本文演示如何比较两张图片是否完全相同. (注意:如果是比较两张图片是否相似,则比较复杂,涉及到机器学习) 方法一:把图片保存到内存流中,然后转化成 Base64 字符串进行比较 using Syste ...

  6. H3C ISDN功能组和参考点

  7. 全面解读Python Web开发框架Django,利用Django构建web应用及其部署

    全面解读Python Web开发框架Django Django是一个开源的Web应用框架,由Python写成.采用MVC的软件设计模式,主要目标是使得开发复杂的.数据库驱动的网站变得简单.Django ...

  8. 2019-10-24-dotnet-列表-Linq-的-Take-用法

    title author date CreateTime categories dotnet 列表 Linq 的 Take 用法 lindexi 2019-10-24 9:4:23 +0800 201 ...

  9. H3C 动态路由协议的基本原理

  10. java Class中得到构造方法Constructor、方法Method、字段Field

    常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...