我将很快开发移动应用程序(iPhone)和基于Web的应用程序(Django)。对于移动应用程序,我将创建一个REST api(最有可能使用Django)从手机到服务器来回发送数据。
当我有时间创建基于Web的版本时,将它创建为api的任何其他客户端是有意义的。换句话说,移动应用程序和Web应用程序都将通过HTTP从外部API获取数据。或者基于Web的应用程序是否可以直接访问api正在使用的数据库并以这种方式获取其数据?
答案 0 :(得分:4)
将其分成三个“部分”。第一个使用Python API来操作数据库。第二个是将REST API与Python API连接起来。第三个是讨论Web并使用Python API。
答案 1 :(得分:1)
我会创建Web应用程序来为移动客户端提供API。也就是说,让基于Web的应用程序直接访问数据库。这将简化您的XML / JSON RESTful资源访问。
答案 2 :(得分:1)
我会说不,不要将API用于HTML版本。如果你很好地设计了Django,那么最终可能会比使用HTML版本的API少得多。每当老板希望拼写更改某些内容时,您还可以保留让网页设计师使用Django模板的功能。
我建议您尝试为您的iPhone应用程序定义基本应用程序以进行交互,然后在HTML版本的第二个应用程序中进行扩展。 App1
将包含所有模型(包括业务逻辑)和views.py
,用于处理来自/来自iPhone的数据。然后创建使用App2
的{{1}},但创建自己的App1.models
。运气好的话,你会发现自己除了用于渲染输出的模板之外什么都不做更改,所以你可以通过传递模板作为参数来重用你的视图。
例如:
<强> App1.views:强>
views.py
<强> App2.views:强>
def list(request, template="list.json"):
list = Model.objects.filter(deleted=False).filter(user=request.user)
list.reverse()
## Lots of other logic to work on the list.
return render_to_response(template, {list: list,})
答案 3 :(得分:0)
我认为这个问题的答案随着时间的推移而发生了变化。一年前被问到这样做可能仍然太麻烦,但现在我肯定会说是 - 使用你的API作为基础是聪明的事情。随着网站使用更多HTML5和移动应用程序变得更聪明,让所有“UI”从同一API层读/写是非常有意义的。这将为您提供更大的灵活性。