使用 jQuery Mobile、Django 和 Phonegap 构建移动应用程序

Posted

技术标签:

【中文标题】使用 jQuery Mobile、Django 和 Phonegap 构建移动应用程序【英文标题】:Building a Mobile App With jQuery Mobile, Django, and Phonegap 【发布时间】:2012-05-31 11:46:51 【问题描述】:

我目前开始使用 jQuery Mobile 构建一个移动应用程序,并用 Phonegap 包装它以支持本机应用程序,它是我们现有的用 Django 编写的桌面应用程序的扩展,我的问题是什么是最好的连接方式用 html5/js/css 编写的客户端应用程序到服务器端,我是否只使用 JSON 来发送/接收数据,有没有人有这方面的好文章?

【问题讨论】:

【参考方案1】:

我个人创建了多个本地应用程序,其中 JqueryMobile 作为我的前端 - Django 作为服务器端 - 并使用 phonegap 本地包装到一个 iTunes 商店应用程序中。这确实是技术的完美组合——如果正确完成——可以产生快速的原生应用程序。

首先你应该看看 Tastypie。 Tastypie 是一种创建即时 RESful API 的非常简单的方法,该 API 可以将 JSON 数据发送到 javascript/JQuery。它是一个 Django 应用程序,它非常 Python 化(大量简单的类/方法覆盖 - 一切都是透明的)。

数据传输流程如下所示:

    使用 jquery.ajax 函数或 getJSON 函数从指定的 URL 获取/发布/放置 JSON 数据。

    此 URL 是从您的模型创建的美味派 API。它可能看起来像 /api/vi/blogs/all/

    现在您在前端使用 Jquery 获得了 JSON 数据 - 您可以使用它做任何您想做的事情 - 填写表格 - 使用表单 - 等等。

首先查看一些 Jquery/Jquery 移动 ajax 函数以及如何通过 Jquery 库在前端使用 JSON。其次熟悉将 JSON 发送回 Django 视图(解析数据并将其保存到数据库)。然后深入了解 JQuery Mobile 用户界面的细节以及使其与 PhoneGap 良好配合的步骤。

【讨论】:

我的另一个问题是,如果我使用 Django 身份验证系统,我需要用户登录我将如何实现这一点,所以当他们打开应用程序时,它会提示他们登录一次,他们会可以选择记住用户名/密码并保持用户登录,只是想知道实现这一点的最佳方法是什么,看看 phonegap 应用程序将如何成为客户端 html/css/js 和 django 将提供 JSON 数据到应用程序 嘿 - 我也做过几次。您可以将 JSON 发送回 Django。您有您的登录表单,并从登录表单中收集用户名/密码。有几种方法可以从这里开始。您在提交表单中的操作可以将用户名/密码发布到 django url,该 url 将在视图函数中获取并比较用户名/密码。您的表单操作可能是 action=/check-login/ 传递数据。您也可以使用 ajax 执行此操作 - 而不是提交表单 - 使用 ajax 将字段数据发送到相同的 django url/view 其次 - 为了让某人保持登录状态 - 您可以使用 PhoneGap 本地存储将有关用户的数据保存在设备上。保存用户偏好等。 @HackingLife:你的观点看起来对我也很有利。但是在纯 django 应用程序中使用 $.ajax(url:'/app/save-user', type:'POST') 的情况下,我们在开发服务器上获取 URL,如 127.0.0.1:8000/app/save-user 和生产服务器上的 https://myappname.com/app/save-user。所以这里实际的疑问是,我们如何在 phonegapp 案例中访问这个 URL?因为这将独立于开发服务器。【参考方案2】:

您需要注意的一件事是 jquery 内置的同源特性。由于 phonegap 使用带有 url file:// 的 webview,因此您发出的任何 web 请求都将是跨域的,因此您需要配置 jquery mobile 以允许它。

见http://jquerymobile.com/test/docs/pages/phonegap.html

除此之外,phonegap 移动应用程序和常规网络应用程序在获取/发布 JSON 方面没有太大区别。

【讨论】:

好吧,通常情况下,我将如何对其进行编程是使用 jQuery mobile 构建我的 html 框架并将其编码到 django 模板中,然后使用 django 将数据输出到这些视图/模板中。那么我要问的是,JSON 是否是最好的方法? 这是不正确的。在移动浏览器上从 file:// 协议运行时,不会应用 CORS。 根据我的回答中的链接“由于 jQuery Mobile 依赖于 jQuery 核心的 $.ajax() 功能,$.support.cors 必须设置为 true 以告诉 $.ajax 加载跨域页面. 我们听说一些平台上的 webviews,比如 BlackBerry,支持跨域加载,但是 jQuery 核心错误地将 $.support.cors 值设置为 false,这会禁用跨域 $.ajax() 请求并导致页面或资产加载失败。”

以上是关于使用 jQuery Mobile、Django 和 Phonegap 构建移动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 jQuery Mobile、PhoneGap 和 Django 实现的移动 Web 应用程序实现首次登录方案?

怎么使用JQuery Mobile开发移动网站

动态填充 jQuery Mobile 列表视图内容

jQuery mobile 不加载新页面脚本

jQuery Mobile中jQuery.mobile.changePage方法使用详解

如何使用 jquery 或 jquery mobile mobile 根据日期列出数据