Python - Django - 登录页面
登录页 login.html:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
<title>mysite-登录页面</title>
<style>
body {
background-color: #eee;
}
</style>
</head>
<body> <div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4" style="margin-top: 100px">
<h1 class="text-center">请登录</h1>
<form class="form-horizontal" action="/check/" method="post">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label"></label>
<div class="input-group col-sm-8">
<span class="input-group-addon"><i class="fa fa-envelope-o fa-fw"></i></span>
<input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label"></label>
<div class="input-group col-sm-8">
<span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
<input type="password" name="pwd" class="form-control" id="inputPassword3" placeholder="Password">
</div>
</div>
<div class="form-group">
<div class="input-group col-sm-offset-2 col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox"> 记住我
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="input-group col-sm-offset-2 col-sm-8">
<button type="submit" class="btn btn-primary btn-block">登录</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
urls.py:
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse, render, redirect def login(request):
return render(request, "login.html") def check(request):
# 获取用户提交的数据
print(request.POST) # 取得所有 POST 过来的数据
return HttpResponse('ok') # 保存路径和函数的对应关系
urlpatterns = [
url(r'^login/', login),
url(r'check/', check),
]
在登录界面随便输内容

点击“登录”

这种情况下要将 settings.py 中的一行代码注释掉

带有 CSRF 这个
注释好后重新输入邮箱和密码

返回成功

Pycharm 打印出了接收到的 POST 的数据,以字典类型
这里要注意一点的是,这里的 key 是和 form 表单中的 name 属性的 email,pwd 相对应的

接下来判断邮箱和用户名是否正确
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse, render, redirect def login(request):
return render(request, "login.html") def check(request):
# 获取用户提交的数据
# print(request.POST) # 取得所有 POST 过来的数据
email = request.POST.get("email", None)
pwd = request.POST.get("pwd", None)
print(email, pwd)
# 判断是否登录成功
if email == '1111@qq.com' and pwd == 'test':
return HttpResponse("登录成功!")
else:
return HttpResponse("登录失败!") # 保存路径和函数的对应关系
urlpatterns = [
url(r'^login/', login),
url(r'check/', check),
]
输入错误的

输入正确的

将 login 函数和 check 函数合并,根据请求方式来执行相关的操作
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse, render, redirect def login(request):
if request.method == "GET": # 这里是要大写的
return render(request, "login.html")
if request.method == "POST":
email = request.POST.get("email", None)
pwd = request.POST.get("pwd", None)
print(email, pwd)
if email == '1111@qq.com' and pwd == 'test':
return HttpResponse("登录成功!")
else:
return HttpResponse("登录失败!") # 保存路径和函数的对应关系
urlpatterns = [
url(r'^login/', login),
]
login.html 中的 action 地址也要修改

可以置空也可以写上 /login/,置空就表示当前目录
优化 login 函数
def login(request):
if request.method == "POST":
email = request.POST.get("email", None)
pwd = request.POST.get("pwd", None)
print(email, pwd)
if email == '1111@qq.com' and pwd == 'test':
return HttpResponse("登录成功!")
return render(request, "login.html")
使用 render 添加错误提示
在 login.html 中添加一句话

{{ error }} 为占位符
login 函数
def login(request):
error_msg = ""
if request.method == "POST":
email = request.POST.get("email", None)
pwd = request.POST.get("pwd", None)
print(email, pwd)
if email == '1111@qq.com' and pwd == 'test':
return HttpResponse("登录成功!")
else:
error_msg = "邮箱或密码错误"
return render(request, "login.html", {"error": error_msg})
登录时输入错误的邮箱或者密码

使用 redirect 实现登录成功后的跳转
urls.py
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from django.conf.urls import url
from django.shortcuts import HttpResponse, render, redirect def login(request):
error_msg = ""
if request.method == "POST":
email = request.POST.get("email", None)
pwd = request.POST.get("pwd", None)
print(email, pwd)
if email == '1111@qq.com' and pwd == 'test':
return redirect("http://www.baidu.com")
else:
error_msg = "邮箱或密码错误"
return render(request, "login.html", {"error": error_msg}) # 保存路径和函数的对应关系
urlpatterns = [
url(r'^login/', login),
]
登录成功后将跳转到百度
Python - Django - 登录页面的更多相关文章
- python Django注册页面显示头像
python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.m ...
- python web框架 Django 登录页面
在django 项目下 创建一个templates 放模板的文件夹 html文件都放在这里 在里面写一个login.html 登录页面 urls.py 加上 login 对应关系 from djang ...
- django登录页面优化
环境准备 1.python3.6 2.django2.0+ 3.bootstrap3 后台代码 #创建login_check视图函数,用来处理登录 def login_action(request): ...
- Django 登录页面重定向
转自:http://blog.chedushi.com/archives/3484 登陆和注销操作在网页编程上很常见,这两个操作经常需要在操作成功以后转入发出请求的页面. 比如用户正在浏览一篇文章,发 ...
- Python django 404页面配置和debug=false 静态文件配置 django版本1.10.5
django设置404页面 1.设置settings文件 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']或者 ALLOWED_HOST ...
- python&django 实现页面中关联查询小功能(中级篇)
目的 组合搜索实现如下图功能 知识点 1.使用自定义标签模板(templatetags) 实现 models.py 和 views.py和初级篇一样 重点如下:在app01目录下创建templatet ...
- python&django 实现页面中关联查询小功能(基础篇)
效果 实现效果图如下,根据过滤条件查询相关信息. 知识点 1.配置URL,在路由中使用正则表达式 2.过滤查询 代码 setting.py from django.contrib import adm ...
- django登录页面设计:
urls: """day42 URL Configuration The `urlpatterns` list routes URLs to views. For mor ...
- Python Django CMDB项目实战之-2创建APP、建模(models.py)、数据库同步、高级URL、前端页面展示数据库中数据
基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需 ...
随机推荐
- I.MX6 Android Linux UART send receive with multi-thread and multi-mode demo
/******************************************************************************************* * I.MX6 ...
- Plotly绘图工具(多用于统计)
作者:桂. 时间:2017-04-23 23:52:14 链接:http://www.cnblogs.com/xingshansi/p/6754769.html 前言 无意中考到一个小工具,网址为: ...
- 【矩阵快速幂】【杭电OJ1757】
http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (Java/ ...
- oracle 11g 建库 建表 增 删 改 查 约束
一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create t ...
- day 2Linux软件从主机安装到服务器和安装JDK软件
软件安装 1.如何上传安装包到服务器**可以使用图形化工具,如: filezilla**可以使用sftp工具: alt+p 调出后,用put命令上传上传(如果不cd指定目录,则上传到当前用户的主目录) ...
- JS常用功能
1.字符串转Json var json='[{"id":0,"text":"ddddd"},{"id":1," ...
- day7 python学习
今日内容# 枚举 此代码可以用于对有一定值的列表进行按带序列号的方式打印出来 lis=['手机','电脑','潜艇','手表'] for index,i in enumerate(lis,1): pr ...
- mysql 如何选择随机行
最简单的方式是使用 mysql 的 ORDER BY RAND() 子句. SELECT col1 FROM tbl ORDER BY RAND() LIMIT 10; 它能很好的运行 ...
- hibernate 1-1(具体解释)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qilixiang012/article/details/27870343 域模型 关系数据模型: 依 ...
- 使用 Visual Studio Code (VSCODE)写 C51 (持续更新 2018-04-09)
Keil C51 那代码编辑器就是上一个时代的产物, 不适合现代人使用. 但是用 Visual Studio Code (VSCODE)就舒服多了.但需要安装和配置一些扩展: 按 Ctrl + Shi ...