一、

在users/views.py中加代码:

from django.http import HttpResponse

class LoginView(View):
"""用户登录"""
def get(self,request):
return render(request,'index.html',{})
def post(self,request):
user_name=request.POST.get("username","")
pass_word=request.POST.get("password","")
user=authenticate(username=user_name,password=pass_word)
if user is not None:
login(request,user)
return HttpResponse('{"status":"success"}')
else:
return HttpResponse('{"status":"fail"},{"msg":"用户名或密码错误"}')

这里注意,HttpResponse(字符串) 如果是像字典的字符串,只可以是单引号包双引号,而不能相反,不然回调到前端时,JSON.parse(字符串)就会报错!

二、

在users/urls.py中配置路由

......

from .views import LoginView
......
urlpatterns = [
...... path('login/',LoginView.as_view(),name='login'), ......
]

三、

在前端的base.html中

在登录对应的模态框代码中:

<!-- Modal -->
<div class="modal fade" id="login" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content" style="width: 500px">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" style="text-align: center">用户登录</h4>
</div> <!--关键代码start-->
<div class="modal-body">
<form id="loginform" action="#" method="post"> <p><div style="display: inline-block;width:150px;text-align: center">
<b>用户名或邮箱:</b>
</div>
<input type="text" name="username" placeholder="用户名/邮箱"></p>
<p><div style="display: inline-block;width:150px;text-align: center">
<b >密码:</b>
</div>
<input type="password" name="pwd" placeholder="密码"></p>
{% csrf_token %}
</form> <p><div style="margin-right: auto;margin-left: auto;background-color: orangered;width:150px;text-align: center">
<b id="login-fail"></b>
</div></p>
</div>
<!--关键代码end--> <div class="modal-footer">
<button type="button" class="btn btn-default">忘记密码</button> <!--关键代码start-->
<button type="button" class="btn btn-primary" id="loginbtn">确认登录</button>
<!--关键代码end--> </div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->

ajax提交代码:

<script>
$("#loginbtn").click(function() {
$.ajax({
cache:false,
type:"POST",
url:"{% url 'users:login' %}",
dataType:'json',
data:$('#loginform').serialize(),
//通过id找到提交form表单,并将表单转成字符串
async:true,
//异步为真,ajax提交的过程中,同时可以做其他的操作
success:function (data) {
//jquery3以后,会将回传过来的字符串格式的data自动json解析不用再使用一遍JSON.parse(data)了,不然反而会在控制台报错
if(data.status=="success"){
location.reload();
}else if(data.status=="fail"){
$('#login-fail').html(data.msg);
}
}
});
}) //如果显示了错误信息,修改输入框内容,错误信息隐藏 $("input").bind('input propertychange', function() {
$('#login-fail').html('');
}); </script>
												

django 通过ajax完成登录的更多相关文章

  1. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  2. 6.Django与Ajax

    Ajax 文件夹为Ajaxdemo 向服务器发送请求的途径: 1.浏览器地址栏,默认get请求: 2.form表单: get请求 post请求 3.a标签,超链接(get请求) 4.Ajax请求 特点 ...

  3. 关于Django的Ajax操作

    一 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服 ...

  4. django BBS project login登录功能实现

    1.models from django.db import models # Create your models here. from django.contrib.auth.models imp ...

  5. Django使用AJAX调用自己写的API接口

    Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...

  6. Django和Ajax

    本文目录 一 什么是Ajax 二 基于jquery的Ajax实现 三 案例 四 文件上传 五 Ajax提交json格式数据 六 Django内置的serializers(把对象序列化成json字符串) ...

  7. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  8. [oldboy-django][1初始django]web框架本质 + django框架 + ajax

    web框架本质 浏览器(socket客户端) - 发送请求(ip和端口,url http://www.baidu.com:80/index/) - GET 请求头(数据请求行的url上: Http1. ...

  9. 基于ajax的登录

    验证码 当登录一个网站的时候往往会有验证码. python生成随机验证码,需要使用到 PIL 模块 安装 : pip3 install pillow 1. 创建图片        我们现在写的验证码属 ...

随机推荐

  1. git基本操作1

    1.创建版本库 在文件夹下,打开Git Bash Here ,然后执行git init,文件夹中会多出.git文件夹.(.git可能是隐藏的) 2.创建a.txt vim  a.txt ,并添加到版本 ...

  2. 结巴(jieba)分词

    一.介绍: jieba: “结巴”中文分词:做最好的 Python 中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentatio ...

  3. Django restframework之Token验证的缺陷及jwt的简单使用

    一.主要缺陷: 1.Token验证是放在一张表中,即authtoken_token中,key没有失效时间,永久有效,一旦泄露,后果不可想象,安全性极差. 2.不利于分布式部署或多个系统使用一套验证,a ...

  4. java & jdk

    java & jdk JDK 下载太慢 & java 12 https://download.oracle.com/otn-pub/java/jdk/12.0.1+12/69cfe15 ...

  5. 微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件

    微软已发布 Windows 10 Timeline 功能的官方 Chrome 插件,这个插件名为 Web Activities,功能是跨 Windows 10 和 Microsoft Launcher ...

  6. CentOS 部署.net core 2.0 项目

    上传项目到服务器 安装Nginx(反向代理服务器),配置文件 https://www.cnblogs.com/xiaonangua/p/9176137.html 安装supervisor https: ...

  7. MD5进行加密操作

    package com.dyy.test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExcept ...

  8. Codeforces Round #488 Div. 1

    A:枚举每个点判断是否同时在两个正方形中即可. #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  9. CodeForces615A-Bulbs-模拟

    水题 #include <cstdio> #include <algorithm> using namespace std; ]; int main() { scanf(&qu ...

  10. Android Studio 显示 logcat

    首先调出 logcat,在整个android studio的左下角(藏的好,尼玛.) 接着设置下面三个红框 1 选择你自己的模拟器. 2 选择Warm 3 选择not filter