(四)注册登录--重用Django
一、使用已有登录功能
(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的更多相关文章
- Django+bootstrap+注册登录系统
转自:https://www.cnblogs.com/robindong/p/9610057.html Robin_D 博客园 首页 新随笔 联系 订阅 管理 随笔 - 10 文章 - 0 评论 ...
- 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证
1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...
- django简单实现注册登录模块
源码下载:https://files.cnblogs.com/files/hardykay/login.zip 新建项目(我使用pycharm开发,也可以使用如下命令建立项目 ) cmd命令行,前提需 ...
- python相关注册登录方式
1.使用django自带功能实现登录/退出登录 使用django自带登录功能,前提生成用户(用户注册)使用的是django自带的user,或称models中用户表继承于django自带的user 1. ...
- 基于 Django2 实现邮箱注册登录功能
1. 开发环境 Python 3.6.5 Django 2.2 2. 项目功能 用户登录 邮箱注册 图形验证码 找回密码 修改密码 用户退出 3. 项目创建 首先创建项目: django-admin ...
- 一步步开发自己的博客 .NET版(3、注册登录功能)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- 如何设计一个 App 的注册登录流程?
移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- vue2.0+koa2+mongodb实现注册登录
前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...
随机推荐
- hdu 4347 The Closest M Points(KD树)
Problem - 4347 一道KNN的题.直接用kd树加上一个暴力更新就撸过去了.写的时候有一个错误就是搜索一边子树的时候返回有当前层数会被改变了,然后就直接判断搜索另一边子树,搞到wa了半天. ...
- Tyvj-1338 QQ农场
P1338 QQ农场 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 ...
- H3C 早期以太网技术介绍
- Python--day68--Django ORM常用字段、不常用的字段、自定义字段
ORM和数据库的对应关系: Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建 ...
- SELinux: Could not downgrade policy file
在配置nfs服务器,设定selinux时,碰到了SELinux: Could not downgrade policy file的错误提示,下文是其解决方案. 一.故障现象 [root@system1 ...
- 判断当前所使用python的版本和来源
import sys print(sys.prefix) print(sys.executable) 怎样判断当前py文件在什么版本的python环境下运行 import sys print(sys. ...
- PHP Warning: Module 'json' already loaded in Unknown on line 0
Zend加密文件.启动服务器后无法正常运行加密后的文件.处理方法: 某台服务器上跑着php 5.3.8,线上服务运行正常. 某天拆分php错误日志时,发现其中有一段连续的错误信息. [14-Feb ...
- java io流与序列化反序列化
java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入 ...
- Python--day60--建立第一个Djiango项目
- React 编写项目连环套路
搭建一个项目 公共部分放一块:index.js style.js store.js reducer.js actionCreateors.js actionTypes.js 分页 一块一 ...