我正在阅读有关 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 涉及响应式网页设计,以对桌面网络浏览器和移动网络浏览器都友好的方式设置网页格式。有一些 CSS 技术可以根据浏览器视口(viewport)大小使用不同的样式表和模板。这将是不同的 jinja2 模板可以用于移动客户端和 web 客户端的地方。或者有根据视口(viewport)大小调整的“响应式设计”。
第 2 期讲述了您如何构建服务和客户。你可以像你说的那样做,并拥有一个独立于任何前端的后端 API(可以是 Flask 应用程序,也可以不是。Flask-Classy 或 Flask-Restful 是 Flask 扩展,有助于使用 Flask 开发 REST API)。然后,您可以编写使用后端 API 的 native 移动应用程序。您可以编写也使用后端的 Flask Web 应用程序。移动应用程序和 Flask 应用程序之间不会有任何依赖关系。它们只是两个不同的客户端,都访问相同的后端 API。
您链接到的示例是创建一个单体网络应用程序。如果这就是您要创建的内容,那么这是一个很好的教程。但是,如果您想要一组可由移动应用程序和 Web 客户端使用的服务,它就不会完全适用。
关于android - 考虑移动设备设计 Flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579602/