Django写的LoginView,登录成功后无法跳转回原页面,求助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django写的LoginView,登录成功后无法跳转回原页面,求助相关的知识,希望对你有一定的参考价值。
参考技术A You do not need to make an extra view for this, the functionality is already built in.First each page with a login link needs to know the current path, and the easiest way is to add the request context preprosessor to settings.py (the 4 first are default), then the request object will be available in each request:
settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
Then add in the template you want the Login link:
base.html:
<a href="% url django.contrib.auth.views.login %?next=request.path">Login</a>
This will add a GET argument to the login page that points back to the current page.
The login template can then be as simple as this:
registration/login.html:
% block content %
<form method="post" action="">
form.as_p
<input type="submit" value="Login">
</form>
% endblock % 参考技术B 你的页面的地址还记得吗?或者如果是用admin建的页面,应该从后台可以直接找到页面地址
雇员信息管理系统管理员数据库登录
运行结果如下:
登录页面loginview.php。
按下登录按钮,跳转到登录处理页面loginview.phploginprocess.php,进行数据库查询后,登录失败,跳转回登录页面loginview.php,并提示错误信息。
输入正确的账号密码,登录成功,跳转到主页面mainview.php。
使用phpMyAdmin创建雇员信息管理数据库(aedb)过程如下:
创建雇员信息管理数据库(aedb)。
在雇员信息管理数据库(aedb)中,创建管理员表(ad)。
在管理员表(ad)中,插入元组。
(注:md5()用于加密。下例字符串参数”123“经过md5函数运算后将得到另一个字符串(称为md5值),无法解密,由此起到加密保护的作用。用于密码验证时,需要求出用户输入密码的md5值,若数据库中经过md5加密的密码与之相同,则验证成功。)
loginview.php源代码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>雇员信息系统</title> 5 <meta http-equiv = "content-type" content="text/html; charset = utf-8 "> 6 7 <style type="text/css"> 8 div.error{height: 22px; width: 150px; color:red; size:2px;} 9 </style> 10 11 </head> 12 <body bgcolor="#ABC"> 13 <center> 14 <div style="height: 60px; width: 50px"></div> 15 <!--用于调整表单的垂直位置--> 16 <h1 >管理员登录</h1> 17 <form action="loginprocess.php" method="post" > 18 <table> 19 <tr> 20 <th>账号</th> 21 <th><input type="text" name="id"></input></th> 22 <th><div class="error"><?php 23 //div,防止表单错误信息影响布局 24 //判断表单错误信息的存在和显示 25 if (isset($_GET[‘error‘])) { 26 $error=$_GET[‘error‘]; 27 }else{ 28 $error=0; 29 } 30 if ($error==1) { 31 echo"*账号或密码错误!"; 32 } 33 ?></div></th> 34 </tr> 35 <!--tr标签内是同一行的内容,th标签内是同一列的内容--> 36 <tr> 37 <th>密码</th> 38 <th><input type="password" name="password"></input></th> 39 </tr> 40 <tr> 41 <th></th> 42 <th> 43 <input type="submit" value="登录"></input> 44 <input type="reset" value="重置"></input> 45 </th> 46 </tr> 47 </table> 48 </form> 49 </center> 50 </body> 51 </html>
loginprocess.php源代码如下:
1 <?php 2 ////设置php文件的编码 3 header("Content-type:text/html;charset=utf-8"); 4 //接受用户数据 5 $id=$_POST[‘id‘]; 6 $password=$_POST[‘password‘]; 7 //得到连接 8 $conn=mysql_connect("localhost","root","root"); 9 if (!$conn) { 10 die("连接失败!错误信息:".mysql_errno()); 11 } 12 //设置访问数据库的编码 13 mysql_query("set names utf8",$conn) or die("设置编码失败!错误信息:".mysql_errno()); 14 //选择数据库 15 mysql_select_db("aedb",$conn) or die("选择数据库失败!错误信息:".mysql_errno()); 16 //发送SQL语句 17 $sql="SELECT password FROM ad WHERE id=$id"; 18 //获取查询结果集 19 $res=mysql_query($sql,$conn); 20 //判断查询结果是否存在及是否完全匹配 21 //md5(),计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。 22 if (($row=mysql_fetch_assoc($res)) && $row[‘password‘]==md5($password)) { 23 //匹配成功,跳转到mainview.php 24 header("Location:mainview.php"); 25 die(); 26 } 27 //匹配失败,跳转到loginview.php,并发送错误信息error 28 header("Location:loginview.php?error=1"); 29 die(); 30 ?>
mainview.php源代码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>欢迎使用雇员信息管理系统</title> 5 <meta http-equiv = "content-type" content="text/html; charset = utf-8 "> 6 7 <style type="text/css"> 8 div.d0{color:red; size:200px; font-weight:700;text-align:center;} 9 </style> 10 11 </head> 12 <body bgcolor="#ABC" > 13 <div class="d0">登录成功!!</div> 14 </body> 15 </html>
以上是关于Django写的LoginView,登录成功后无法跳转回原页面,求助的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WPF MVVM 应用程序中成功登录关闭 LoginView?
Django REST EmailAddress 匹配查询不存在
AttributeError:模块'django.contrib.auth.views'没有属性'LoginView'