android - 考虑移动设备设计 Flask 应用程序?

标签 android python web flask

我正在阅读有关 Flask 的信息。鉴于它与 Jinja2 和 WTF 形式的紧密集成,当我开始编写我的网站的 native 移动版本时会发生什么?我通常写一堆独立于前端工作的后端 API,然后使用 JS 编写前端代码。这样,如果我必须实现 native 移动应用程序,我可以无缝地使用后端 API。 Flask(或其他一些框架)与模板引擎紧密集成,我应该如何设计我的应用程序?

例如,让我们以here为例,作者提倡登录函数这样写:

from flask import render_template, flash, redirect
from app import app
from forms import LoginForm

# index view function suppressed for brevity

@app.route('/login', methods = ['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        flash('Login requested for OpenID="' + form.openid.data + '", remember_me=' + str(form.remember_me.data))
        return redirect('/index')
    return render_template('login.html', 
        title = 'Sign In',
        form = form)

但是,当我构建原生 Android/iOS 应用程序时,我假设后端应该公开一堆 API 调用来验证输入并为您进行登录。鉴于移动设备与 Jinga2 或其他一些模板无关(因为所有内容都是 native 实现的),所有这些代码在 native 移动应用程序的上下文中都是无用的。这意味着,我将不得不重构“真实世界”的 Flask 代码以与移动应用程序兼容。是这种情况还是我错过了更高层次的观点?

我的具体问题是:我应该在 Flask 中遵循什么设计模式以确保我的网站对 Web 和移动设备友好?

最佳答案

我认为这里有两个问题:

  1. 编写一个网络和移动友好的网络客户端
  2. 使用网络和移动组件设计应用

问题 1 涉及响应式网页设计,以对桌面网络浏览器和移动网络浏览器都友好的方式设置网页格式。有一些 CSS 技术可以根据浏览器视口(viewport)大小使用不同的样式表和模板。这将是不同的 jinja2 模板可以用于移动客户端和 web 客户端的地方。或者有根据视口(viewport)大小调整的“响应式设计”。

第 2 期讲述了您如何构建服务和客户。你可以像你说的那样做,并拥有一个独立于任何前端的后端 API(可以是 Flask 应用程序,也可以不是。Flask-Classy 或 Flask-Restful 是 Fl​​ask 扩展,有助于使用 Flask 开发 REST API)。然后,您可以编写使用后端 API 的 native 移动应用程序。您可以编写也使用后端的 Flask Web 应用程序。移动应用程序和 Flask 应用程序之间不会有任何依赖关系。它们只是两个不同的客户端,都访问相同的后端 API。

您链接到的示例是创建一个单体网络应用程序。如果这就是您要创建的内容,那么这是一个很好的教程。但是,如果您想要一组可由移动应用程序和 Web 客户端使用的服务,它就不会完全适用。

关于android - 考虑移动设备设计 Flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579602/

相关文章:

android - "private"aidl 对系统进程有多安全

Java 泛型 : cant call a function with said generics even though type matches

java - Android 应用程序中的命名 ID

android - Robolectric:Resources$NotFoundException:带有 Android Gradle 插件 3 的字符串资源 ID

python - 如何得到 "cache"耗时结果?

javascript - 如何从 jQuery 中的 select 的选定选项中获取属性?

python - 在 Python 中连续解析文件

python - 在穿过多边形的每个点处分割线串

css - 单击播放时如何使网站上的嵌入式 youtube 视频帧膨胀?

调用 CHL 函数,在 View 之外