(四)注册登录--重用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实现注册登录
前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...
随机推荐
- H3C 各种视图之间的关系
- ELMo解读(论文 + PyTorch源码)
ELMo的概念也是很早就出了,应该是18年初的事情了.但我仍然是后知后觉,居然还是等BERT出来很久之后,才知道有这么个东西.这两天才仔细看了下论文和源码,在这里做一些记录,如果有不详实的地方,欢迎指 ...
- 2018-9-1-win10-uwp-轻量级-MVVM-框架入门-2.1.5.3199
title author date CreateTime categories win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 lindexi 2018-09-01 16:24: ...
- iptables禁止icmp端口
除192.168.62.1外,禁止其它人ping我的主机 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-ty ...
- pytorch JIT浅解析
概要 Torch Script中的核心数据结构是ScriptModule. 它是Torch的nn.Module的类似物,代表整个模型作为子模块树. 与普通模块一样,ScriptModule中的每个单 ...
- Laravel 中 validation 验证 返回中文提示 全局设置
<?php return [ /* |-------------------------------------------------------------------------- | V ...
- laravel validate 设置为中文(验证提示为中文)
把 resources\lang 下en 的文件夹 复制在同一目录并改名为 zn 把zn 中的 validation.php文件修改为 https://laravel-china.org/articl ...
- CSS优化,提高性能的方法有哪些?
1,首推的是合并css文件,如果页面加载10个css文件,每个文件1k,那么也要比只加载一个100k的css文件慢. 2,减少css嵌套,最好不要套三层以上. 3,不要在ID选择器前面进行嵌套,ID本 ...
- 【原生JS】滑动门效果
效果图: 思路:通过每次鼠标移动至目标上使所有图片重置为初始样式再向左移动目标及其左侧每个图片隐藏部分距离即实现. HTML: <!DOCTYPE html> <html> & ...
- 2019-1-4-win10-uwp-win2d-CanvasVirtualControl-与-CanvasAnimatedControl
title author date CreateTime categories win10 uwp win2d CanvasVirtualControl 与 CanvasAnimatedControl ...