登录页 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 - 登录页面的更多相关文章

  1. python Django注册页面显示头像

    python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.m ...

  2. python web框架 Django 登录页面

    在django 项目下 创建一个templates 放模板的文件夹 html文件都放在这里 在里面写一个login.html 登录页面 urls.py 加上 login 对应关系 from djang ...

  3. django登录页面优化

    环境准备 1.python3.6 2.django2.0+ 3.bootstrap3 后台代码 #创建login_check视图函数,用来处理登录 def login_action(request): ...

  4. Django 登录页面重定向

    转自:http://blog.chedushi.com/archives/3484 登陆和注销操作在网页编程上很常见,这两个操作经常需要在操作成功以后转入发出请求的页面. 比如用户正在浏览一篇文章,发 ...

  5. Python django 404页面配置和debug=false 静态文件配置 django版本1.10.5

    django设置404页面 1.设置settings文件 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']或者 ALLOWED_HOST ...

  6. python&django 实现页面中关联查询小功能(中级篇)

    目的 组合搜索实现如下图功能 知识点 1.使用自定义标签模板(templatetags) 实现 models.py 和 views.py和初级篇一样 重点如下:在app01目录下创建templatet ...

  7. python&django 实现页面中关联查询小功能(基础篇)

    效果 实现效果图如下,根据过滤条件查询相关信息. 知识点 1.配置URL,在路由中使用正则表达式 2.过滤查询 代码 setting.py from django.contrib import adm ...

  8. django登录页面设计:

    urls: """day42 URL Configuration The `urlpatterns` list routes URLs to views. For mor ...

  9. Python Django CMDB项目实战之-2创建APP、建模(models.py)、数据库同步、高级URL、前端页面展示数据库中数据

    基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需 ...

随机推荐

  1. tesseract text2image windows

    text2image.exe --text="X:\xxx.txt" --outputbase="X:\test.font.exp0" --fontconfig ...

  2. Ubuntu中敲写c语言步骤

    1.进入Ubuntu界面 1.1按快捷键 Ctrl + Alt + T: 1.2 安装vim:输入 sudo apt-get install vim: 1.3 安装gcc:输入 sudo apt-ge ...

  3. 轻松玩转AI 与PDF文件的转化(完美解决字体问题)

    经过漫长而坚苦卓绝的研究查阅了网上无数资料下载了众多相关软件进行试验终于,找到搞定PDF文件的方便并且有效的办法PDF文件!你这个魔鬼!退去吧!!!! 难点一: 如何修改客户常常会提供不知道从哪里搞来 ...

  4. 51Nod 1079:中国剩余定理

    1079 中国剩余定理  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % ...

  5. (转)C++初始化与赋值

    来源:http://www.cnblogs.com/chio/archive/2008/10/06/1305145.html 先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一 ...

  6. 【MVC】使用MvcPager进行分页

    1.添加引用: mvcPager 版本高的提供的功能也更多. 注:下载了第一个,但是里面的一些字段是只读的.(eg:PagedList<T> .TotalItemCount)这是不符合的. ...

  7. [转]G++与GCC的区别

    转自http://www.52pojie.cn/thread-58109-1-1.html 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当 ...

  8. 转 web.config设置之system.webServer 详细介绍,为网站设置默认文档

    如何:为 IIS 7.0 配置 <system.webServer> 节2008-06-14 22:26http://technet.microsoft.com/zh-cn/sysinte ...

  9. SpringCloud初体验:六、利用 Sleuth 和 Zipkin 给微服务加上链路监控追踪查看功能

    首先:装上 Zipkin 服务,收集调用链跟踪数据,体验时装在了本机docker上, 方便快捷 docker run -d -p : openzipkin/zipkin 安装后访问地址也是 9411端 ...

  10. MySQL的结构图

    MySQL的结构图 为了更好的了解和配置MySQL,就必须先了解一下MySQL的体系结构.如下图所示: ▲MySQL体系架构图 理解MySQL的体系架构对于成功的配置和调试至关重要.以下将对架构图进行 ...