登录页 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. SMON进程、PMON进程、LGWR/ARCH

    SMON 进程:system monitor instance monitor 系统监控.实例监控进程 说明及作用:在实例关闭时,会清理临时段,整理空闲空间free space; 实例非正常关闭后,启 ...

  2. opencv数据类型和格式的坑

    //cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_8UC1); cv::Mat uvp = cv::Mat::zeros(2, probp.size ...

  3. 教你正确进入DFU及恢复模式 无敌重刷模式

    苹果分为两种恢复模式,一种叫做DFU模式,另一种是恢复模式.DFU的全称是Development FirmwareUpgrade,实际意思就是iPhone固件的强制升降级模式.而恢复模式则是屏幕上会显 ...

  4. hive中实现类似MySQL中的group_concat功能

    hive> desc t; OK id      string str     string Time taken: 0.249 seconds hive> select * from t ...

  5. LG1116 【车厢重组】

    前言 看了大家的做法,什么冒泡排序,插入排序,树状数组,线段树,都好厉害呐,我都没想出来 但我发现竟然还没有人用主席树,于是我跟大家交流一下 主席树 做法 显然我们有 \(Ans=\sum_{i=1} ...

  6. 51Nod1526 分配笔名

    分析 在trie树上贪心,将所有串加入trie树中,在深度较深的地方匹配会更优. 由于只需要知道最后的总质量,所以直接取每个点的子树中最大的匹配即可 复杂度\(O(\sum len)\) 加串的时候把 ...

  7. ImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsImageCollectiontopic The collec ...

  8. [C++] 一个能够定时自毁的类的实现

    试想一下, 有没有这种需求: 对于每一个新的对象, 我们希望它能够在一定时间后自动销毁, 前提是我们没有在这段时间内给它发出重置信号. 这种需求其实是有的, 比如在电影里, 主角知道了一个反派不希望被 ...

  9. 【转】每天一个linux命令(21):find命令之xargs

    原文网址:http://www.cnblogs.com/peida/archive/2012/11/15/2770888.html 在使用 find命令的-exec选项处理匹配到的文件时, find命 ...

  10. 3种web会话管理方式:基于server端session方式、cookie-based方式、token-based方式

    出处:http://www.cnblogs.com/lyzg/p/6067766.html