到目前为止,我的流程是使用WTF表单并根据用户活动更新其状态:
在 template.html 中,我有:
<form action="{{ url_for('page') }}" method="POST">
<select id="sel_id" name="name1" onchange="this.form.submit();">
...
</select>
</form>
... 在 views.py 中我得到了:
@app.route('/')
@app.route('/process', methods=['GET', 'POST'])
def process():
form = NoNameForm()
if request.method == 'POST':
if 'name1' in request.form:
form.colors = int(request.form['name1'])
在这种情况下,这是使用WTF表单和更新form.colors
等变量的正确方法吗?
我想知道我是否可以直接在“form.colors
”js代码中更新onchange
。
答案 0 :(得分:3)
我不认为在这种情况下有一个“正确”的方法 - 正确的方式取决于你想要达到的目的。
A。如果 - 例如 - 你不想因为某种原因搞乱JavaScript,你不介意重新加载页面,那么你可以像在代码示例中那样做。
B。另一方面,如果您只是想重新加载页面来更改表单颜色,那么我会说这是一个开销,简单的JS脚本会更优雅,用户友好情况下。
编辑回答评论问题:
你能解释一下'重装页面'吗?
当您的浏览器使用标准HTTP方法(如GET和POST)与服务器通信以交换数据时,它必须在获取响应(这是对您的请求的答案)后重新加载页面服务器。
另一方面,如果您的页面使用AJAX(异步JavaScript和XML),那么事实并非如此。引用Wikipedia主题:
使用Ajax,Web应用程序可以向其发送数据和从中检索数据 服务器异步(在后台)不干扰 显示现有页面的行为。通过解耦数据 从表示层交换层,Ajax允许Web 页面,以及扩展Web应用程序,以更改内容 动态而无需重新加载整个页面。
如果我决定使用JS并且我没有重新加载页面,我会在选项'A'中松开什么?
无论哪种方式都有其优点和缺点,由您决定哪种方式可以使用。
引用this文章:
Ajax的主要优势:
它使事情变得简短而快速 2.摆脱重装页面 3.对于实时应用非常有用。
4.减少服务器负载并节省带宽。Ajax的主要缺点:
1.书签问题。
2.对SEO很糟糕。
3.屏幕阅读器无法访问ajax 4.只有现代浏览器支持它,如果用户端没有启用javascript,你的网站看起来会很难看。
使用JS意味着它不会重新加载页面吗?
如果您使用Ajax与服务器和JS交换数据以将结果放在您的网站上,那么是 - 不需要重新加载。
回到您的代码示例 - 如果您只是出于演示原因而想要更改表单颜色,并且对于您的应用程序而言,表单具有哪种颜色并不重要,那么就没有理由在服务器端执行此操作。