一、

在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. linux ps命令用法

    -A    列出所有的进程-w    显示加宽可以显示较多的资讯-au    显示较详细的资讯-aux    显示所有包含其他使用者的行程 -A 显示所有进程(等价于-e)(utility)-a 显示 ...

  2. dede:field name=’position’标签调用 主页改成英文Home和改变符号

    在用dede:field name=’position’ 这个标签的时候我们调用的这个就是中文的,出现的是主页>+相应的栏目  ,那么这个问题怎么改成英文的呢?有好多大虾都说找到dede安装目录 ...

  3. Sql Server 时间格式化

    0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)       1   101   美国   mm/dd/yyyy       ...

  4. 文件操作 chardet使用

    #_*_coding:utf-8_*_ import chardet #f = open(file="兼职白领学生空姐模特护士联系方式.txt", mode="rb&qu ...

  5. 了解AutoCAD对象层次结构 —— 5 —— 块表

    为了清楚的了解块表的组成内容,让我们利用MgdDbg工具查看一下块表中的块表记录.在开始页面,以无样板模式新建一个.dwg文件(图 4‑7(1)),这样的话,默认的块表记录只有3条(图 4‑7(2)) ...

  6. P1216 数字三角形

    题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...

  7. STL的一些基本操作

    STL是一个神奇的东西,在NOIP考试中非常重要. 什么是STL? STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C+ ...

  8. Appium环境的安装以及一路上的坑

    Appium环境的安装以及一路上的坑 第一步环境的安装 l  javaJDK的安装以及环境变量的配置这个我就不说了网上的教程全都是,搜一个安装一下吧 l  AndroidSDK的安装也是如此我是直接安 ...

  9. FAQ常见问题解答---搭建hubot

    1. [root@test160 ~]# npm install -g n npm ERR! Error: CERT_UNTRUSTED 证书不受信任的 解决办法: npm config set st ...

  10. THUWC2018游记

    前言 这次THUWC有pretest,非常不错.但还是要对拍. DAY1 上午先去报个到. 下午1:30开始比赛,状态还是很好的. 开场先看题. 发现t1是个联赛贪心题,就花了半个小时写完+拍完了. ...