Django + ajax
2016-08-06 16:08
316 查看
标签(空格分隔): 未分类
很多地方要用到ajax,还是要做一下的
我想了一下思路:
比如说,我们就只做一个判断输入用户名的时候,不用刷新,在前端提示该用户是不是在数据库里的功能;
实现方法肯定是,我们写进输入框,然后焦点离开输入框之后,用ajax把输入框的内容传到后台,然后验证之后返回一个状态标识(用户名是否存在数据库的标识)
然后我们就可以写出
首先简单写一个表单做示例
接着是js函数
应该不难理解吧
- blur函数是jQuery的焦点离开的触发函数;
- ‘/find’是我们在Django后台定义的路由,我们在urls.py里如下定义:
然后后台实现find函数如下(因为我们这里是通过url传参,函数的参数表并不用定义,访问到这个函数的url格式是‘/find?username=…’):
上述几步应该就可以实现功能了
以下的是讲如何将上述功能整合到一个公共模块,然后子页面调用,大家想看就看。
我们写一个check.html放到Django的公共模板(公共的templates文件夹)里:
然后我们的表单的html就是
是不是很详细~~
很多地方要用到ajax,还是要做一下的
我想了一下思路:
比如说,我们就只做一个判断输入用户名的时候,不用刷新,在前端提示该用户是不是在数据库里的功能;
实现方法肯定是,我们写进输入框,然后焦点离开输入框之后,用ajax把输入框的内容传到后台,然后验证之后返回一个状态标识(用户名是否存在数据库的标识)
然后我们就可以写出
首先简单写一个表单做示例
<form action="" method="post"> {% csrf_token %} 用户名: <input name="username" id="username" /> <br> <p id="hint"></p> <br> <input type="submit" value="提交"> </form>
接着是js函数
<script type="text/javascript" src='{% static 'scripts/jquery-2.2.0.js'%}'> </script> <script> $(document).ready(function(){ $("#username").blur(function(){ var uname = $("#username").val(); $.get("/find",{'username':uname}, function(ret){ $('#hint').html(ret); }) }); }); </script>
应该不难理解吧
- blur函数是jQuery的焦点离开的触发函数;
- ‘/find’是我们在Django后台定义的路由,我们在urls.py里如下定义:
from User.views import find urlpatterns = [ # ...其他url url(r'^find$', find, name='find'), ]
然后后台实现find函数如下(因为我们这里是通过url传参,函数的参数表并不用定义,访问到这个函数的url格式是‘/find?username=…’):
def find(request): user_name = request.GET['username'] try: user = User.objects.get(user_name = user_name) return HttpResponse("exist") except: return HttpResponse("not exist")
上述几步应该就可以实现功能了
以下的是讲如何将上述功能整合到一个公共模块,然后子页面调用,大家想看就看。
思路:
我们可以把js函数写到check.html(公共模板)里,但是如果这样的话,因为我们的函数是通过前端控件的id来处理动作,那么,我们在继承的时候,所有前端控件的id都必须相同,我们就假设所有用到该功能的输入框为id = ‘username’;我们写一个check.html放到Django的公共模板(公共的templates文件夹)里:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> {% block script %} {% load staticfiles %} <script type="text/javascript" src='{% static 'scripts/jquery-2.2.0.js'%}'></script> <script> $(document).ready(function(){ $("#username").blur(function(){ var uname = $("#username").val(); $.get("/find",{'username':uname}, function(ret){ $('#hint').html(ret); }) }); }); </script> {% endblock%} </head> <body> {% block body %} body {% endblock %} </body> </html>
然后我们的表单的html就是
<!DOCTYPE html>
{% extends "check.html" %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% block body %}
<h1>This is test!</h1>
<form action="" method="post"> {% csrf_token %} 用户名: <input name="username" id="username" /> <br> <p id="hint"></p> <br> <input type="submit" value="提交"> </form>
{% endblock %}
</body>
</html>
是不是很详细~~
相关文章推荐
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
- django中的ajax组件教程详解
- Django----->Ajax
- django csrftoken ajax
- django中ajax使用
- django 简易博客开发 --comments库使用及ajax支持
- python json ajax django四星聚会
- django 1.4 利用jquery实现ajax ‘get|post’异步请求
- django中如何实现ajax(post)日记选
- Django 基础(二),Model连表、Form自定义错误信息、Ajax操作
- Django用ajax发送post请求时csrf拦截的解决方案
- Django:之传递数据给JS、Ajax和Ajax CSRF认证
- Django的Ajax开发,Dojo + SAjax
- Django(四) ORM 外键操作及初识Ajax
- django获取ajax的post复杂对象
- Django+Ajax+jQuery实现网页动态更新的实例
- django中使用POST方法 使用ajax后出现“CSRF token missing or incorrect”
- [置顶] django ajax练习
- ajax在django中的应用
- django ajax关于csrf_token