📜  传递查询参数 django 模板 - Python (1)

📅  最后修改于: 2023-12-03 14:49:33.361000             🧑  作者: Mango

传递查询参数 Django 模板

在开发 Web 应用程序时,我们通常需要向服务器发送带有一些参数的请求。这些参数可用于过滤查询,指定排序和分页等任务。在 Django 中,我们可以使用查询字符串来从客户端向服务器传递这些参数。

查询字符串

查询字符串是 URL 中的一部分,用于向服务器传递参数。查询字符串以 ? 开头,并以 key=value 的形式添加参数,多个参数之间用 & 连接。例如:

http://example.com/?name=john&age=30&gender=male

在 Django 中,我们可以使用 request.GET 属性来访问查询字符串中的参数。例如:

def my_view(request):
    name = request.GET.get('name', '')
    age = request.GET.get('age', '')
    gender = request.GET.get('gender', '')
    # ...
向模板传递查询参数

当我们需要将查询参数传递给模板时,我们需要将它们作为上下文字典的一部分传递到 render 函数中。例如:

def my_view(request):
    name = request.GET.get('name', '')
    age = request.GET.get('age', '')
    gender = request.GET.get('gender', '')
    context = {
        'name': name,
        'age': age,
        'gender': gender,
    }
    return render(request, 'my_template.html', context)

然后在模板中,我们可以通过变量名访问这些参数。例如:

<p>Name: {{ name }}</p>
<p>Age: {{ age }}</p>
<p>Gender: {{ gender }}</p>
构建查询字符串

当我们需要构建查询字符串时,我们可以使用 Django 的内置 urlencode 函数。该函数可以将一个字典转换为查询字符串的形式。例如:

from urllib.parse import urlencode

query_params = {
    'name': 'john',
    'age': 30,
    'gender': 'male',
}

query_string = urlencode(query_params)
url = f'http://example.com/?{query_string}'

在模板中,我们也可以使用 urlencode 过滤器来构建查询字符串。例如:

<a href="?{{ query_params|urlencode }}">Filter results</a>

上面的示例中,query_params 是一个字典,urlencode 过滤器将其转换为查询字符串的形式。

总结

在 Django 中,我们可以使用查询字符串来向服务器传递参数。当我们需要将查询参数传递给模板时,我们需要将它们作为上下文字典的一部分传递到 render 函数中。当我们需要构建查询字符串时,我们可以使用 urlencode 函数或 urlencode 过滤器。