博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django基础知识之Ajax:
阅读量:5337 次
发布时间:2019-06-15

本文共 1967 字,大约阅读时间需要 6 分钟。

使用Ajax

  • 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差
  • 改进方案:通过ajax的方式获取数据,通过dom操作将数据呈现到界面上
  • 推荐使用框架的ajax相关方法,不要使用XMLHttpRequest对象,因为操作麻烦且不容易查错
  • jquery框架中提供了$.ajax、$.get、$.post方法,用于进行异步交互
  • 由于csrf的约束,推荐使用$.get
  • 示例:实现省市区的选择
  • 最终实现效果如图:
  • 引入js文件

    • js文件属于静态文

    修改settings.py关于静态文件的设置

    STATIC_URL = '/static/'STATICFILES_DIRS = [    os.path.join(BASE_DIR, 'static'),]

    在models.py中定义模型

    class AreaInfo(models.Model):    aid = models.IntegerField(primary_key=True)    atitle = models.CharField(max_length=20)    aPArea = models.ForeignKey('AreaInfo', null=True)

    生成迁移

    python manage.py makemigrationspython manage.py migrate

    通过workbench向表中填充示例数据

    • 参见“省市区.sql”
    • 注意将表的名称完成替换

    在views.py中编写视图

    • index用于展示页面
    • getArea1用于返回省级数据
    • getArea2用于根据省、市编号返回市、区信息,格式都为字典对象
    from django.shortcuts import renderfrom django.http import JsonResponsefrom models import AreaInfodef index(request):    return render(request, 'ct1/index.html')def getArea1(request):    list = AreaInfo.objects.filter(aPArea__isnull=True)    list2 = []    for a in list:        list2.append([a.aid, a.atitle])    return JsonResponse({'data': list2})def getArea2(request, pid):    list = AreaInfo.objects.filter(aPArea_id=pid)    list2 = []    for a in list:        list2.append({'id': a.aid, 'title': a.atitle})    return JsonResponse({'data': list2})

    在urls.py中配置urlconf

    from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^$', views.index),    url(r'^area1/$', views.getArea1),    url(r'^([0-9]+)/$', views.getArea2),]

    主urls.py中包含此应用的url

    from django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [    url(r'^', include('ct1.urls', namespace='ct1')),    url(r'^admin/', include(admin.site.urls)),]

    定义模板index.html

    • 修改settings.py的TEMPLATES项,设置DIRS值
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    • 定义模板文件:包含三个select标签,分别存放省市区的信息
        省市区列表

    在模板中引入jquery文件

    编写js代码

    • 绑定change事件
    • 发出异步请求
    • 使用dom添加元素

转载于:https://www.cnblogs.com/huwei934/p/6978739.html

你可能感兴趣的文章
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>