python 使用url_for()在Flask中创建动态URL

zpjtge22  于 2022-12-21  发布在  Python
关注(0)|答案(6)|浏览(167)

我的Flask路线中有一半需要一个变量,例如/<variable>/add/<variable>/remove。如何创建到这些位置的链接?
url_for()为要路由到的函数取一个参数,但我不能添加参数?

oxosxuxt

oxosxuxt1#

它接受变量的关键字参数:

url_for('add', variable=foo)
url_for('remove', variable=foo)

flak-server将具有以下功能:

@app.route('/<variable>/add', methods=['GET', 'POST'])
def add(variable):

@app.route('/<variable>/remove', methods=['GET', 'POST'])
def remove(variable):
2admgd59

2admgd592#

Flask中的url_for用于创建URL,以避免在整个应用程序(包括模板)中更改URL的开销。如果没有url_for,则如果应用的根URL发生更改,则必须在链接所在的每个页面中进行更改。
语法:url_for('name of the function of the route','parameters (if required)')
它可以用作:

@app.route('/index')
@app.route('/')
def index():
    return 'you are in the index page'

现在,如果你有一个链接的索引页:你可以使用这个:

<a href={{ url_for('index') }}>Index</a>

你可以用它做很多事情,例如:

@app.route('/questions/<int:question_id>')    #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):  
    return ('you asked for question{0}'.format(question_id))

对于上述内容,我们可以用途:

<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>

像这样,您可以简单地传递参数!

iqjalb3h

iqjalb3h3#

有关flask.url_for(),请参阅培养瓶API文件
下面是将js或css链接到模板的其他示例代码片段。

<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
rslzwgfq

rslzwgfq4#

模板:

传递函数名和参数。

<a href="{{ url_for('get_blog_post',id = blog.id)}}">{{blog.title}}</a>

视图、功能

@app.route('/blog/post/<string:id>',methods=['GET'])
def get_blog_post(id):
    return id
sy5wg1nm

sy5wg1nm5#

你需要添加函数意味着你想要呈现该函数的页面应该被添加到url_for(函数名)中。它将重定向到该函数,页面将相应地呈现。

qlfbtfca

qlfbtfca6#

如果这样做有帮助,您可以在声明flask应用时覆盖静态文件夹。

app = Flask(__name__,
            static_folder='/path/to/static',
            template_folder='/path/to/templates')

相关问题