flask url_for

url_for()是Flask框架中的一个重要函数,用于生成URL。它接受一个参数,即视图函数的名称,并返回该视图函数对应的URL。这个函数非常有用,因为它可以自动处理URL的生成,避免手动编写URL,从而减少错误并提高代码的可维护性。

以下是url_for()函数的一些关键用法:

  1. 基本用法
    from flask import Flask, url_for

    app = Flask(__name__)

    @app.route('/')
    def index():
        return 'Hello, World!'

    print(url_for('index'))  # 输出: /
    ```

2. **带参数的URL** :

```python
    @app.route('/user/<username>')
    def user_profile(username):
        return f'Hello, {username}!'

    print(url_for('user_profile', username='John'))  # 输出: /user/John
    ```

3. **带查询字符串的URL** :

```python
    @app.route('/search')
    def search():
        return 'Search results will be here.'

    print(url_for('search', query_args={'q': 'Flask'}))  # 输出: /search?q=Flask
    ```

4. **生成绝对URL** :

```python
    app.config['SERVER_NAME'] = 'example.com'
    print(url_for('index', _external=True))  # 输出: http://example.com/
    ```

5. **静态文件** <b class="card40_249__sup_a7f6" data-sup="sup">5</b>:

```python
    @app.route('/static/<filename>')
    def serve_static(filename):
        return send_from_directory('static', filename)

    print(url_for('serve_static', filename='css/style.css'))  # 输出: /static/css/style.css
    ```

6. **重定向** :

```python
    @app.route('/login')
    def login():
        return redirect(url_for('dashboard'))

    @app.route('/dashboard')
    def dashboard():
        return 'Welcome to your dashboard!'
    ```

通过这些示例,你可以看到`url_for()`函数在生成URL时的灵活性和强大功能。它不仅可以生成相对路径,还可以生成绝对路径,并且可以轻松地与查询字符串和端点参数一起使用。这使得在Flask应用程序中构建URL变得非常简单和可靠。
Top