我想将变量从站点传递到另一个站点。 这没有问题,因为有很多方法可以做到这一点。 我虽然挣扎,但我怎么能隐藏#39;这些变量在URL中,但仍能够获取值。 例: 如果我使用' request.args.get':
@page.route('/users', methods=['GET', 'POST'])
def users():
user = request.args.get('user')
return render_template('users.html', user=user)
当我点击链接时,生成的URL是: http://localhost:5000/users?user=john
我的目标是访问'用户'页面,在约翰'部分,但用户将在URL路径中看到的内容仅为http://localhost:5000/users
答案 0 :(得分:0)
如果您只想隐藏变量名称,则可以使用转换器创建类似'users/<str:username>'
的路径。您的网址为http://localhost:5000/users/john
。
您可以在此处找到文档:http://exploreflask.com/en/latest/views.html#built-in-converters
请注意,完全隐藏变量意味着您的用户将无法为他们所在的页面添加书签。另外,如果他们将/users
加入书签,你就必须注意你的变量没有被发送或遇到错误。
答案 1 :(得分:0)
Post方法可以隐藏URL中的数据和变量。所以你需要将它集成到你的项目中。这是一个例子。
app.py
:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/users', methods=['GET', 'POST'])
def show_users():
if request.method == 'POST':
username = request.form.get("username", None)
return render_template('post_example.html', username = username)
else:
return render_template('post_example.html')
if __name__ == '__main__':
app.run(debug = True)
post_example.html
:
<html>
<head></head>
<body>
{% if username %}
Passed username: {{ username }}
{% endif %}
<form action="/users" method="post">
Username: <input type="text" name="username">
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
输出:
您可以检查HTTP方法in Flask official documentation here
答案 2 :(得分:0)
我能够通过以下方式实现我的目标:
window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", "/users/");
我不是Web Dev'er,只是一个Python / Flask爱好者,并且知道'window.history.pushState()'是出于其他目的。我也知道它是HTML5功能,并非所有浏览器都兼容。但是,嘿,它做了伎俩;)。
除非有人指出我不应该使用这种方法的原因,否则这是我的解决方案。
感谢您的所有时间