在django中为URL添加查询字符串

时间:2011-08-15 01:23:24

标签: django

我有一个调用另一个函数的函数,并将查询字符串传递给URL的末尾。

我将如何完成以下任务 -

if my_videos:
    return render(request, template, {kwargs}) + "?filter=others&sort=newest"

注意:我不在乎是否使用渲染,它的用途仅仅是指出我想要完成的任务。谢谢。

6 个答案:

答案 0 :(得分:31)

在模板中传递查询字符串:

<a href="{% url my_videos %}?filter=others&sort=newest">My Videos</a>

答案 1 :(得分:10)

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect


if my_videos:
    return HttpResponseRedirect( reverse('my_videos') + "?filter=others&sort=newest")

答案 2 :(得分:6)

我不确定在询问此问题时是否可以这样做,但是如果您有可用的数据在视图中构建查询字符串并将其作为上下文传递,则可以使用QueryDict课程。构建之后,您可以调用其urlencode函数来创建字符串。

示例:

from django.http import QueryDict

def my_view(request, ...):
    ...
    q = QueryDict(mutable=True)
    q['filter'] = 'other'
    q['sort'] = 'newest'
    q.setlist('values', [1, 2, 'c'])
    query_string = q.urlencode()
    ...

query_string现在将具有值u'filter=other&sort=newest&values=1&values=2&values=c'

答案 3 :(得分:3)

以下是两个用于修改模板中查询字符串参数的智能模板标记:

答案 4 :(得分:2)

在模板中,您可以执行以下操作:

{% url 'url_name' user.id %}
{% url 'url_name'%}?param=value
{% "/app/view/user_id" %}

在第一个中,查询字符串将采用“http://localhost.loc/app/view/user_id”的形式 在第二个中,查询字符串应采用“http://localhost.loc/app/view?param=value”的形式 在第三个,很简单,但我建议第一个取决于urls.py中应用的url映射的名称

在视图中应用此方法,应使用HttpResponseRedirect

完成
    #using url_names
    # with standard querystring
    return HttpResponseRedirect( reverse('my_url') + "?param=value")
    #getting nicer querystrings
    return HttpResponseRedirect(reverse('my_url', args=[value]))
    # or using relative path
    return HttpResponseRedirect( '/relative_path' + "?param=value")

提示:从任何其他视图获取查询字符串值

s = request.GET.get('param','')

答案 5 :(得分:1)

使用HttpResponseRedirect

重定向到您想要的网址
from django.http import HttpResponseRedirect

[...]

if my_videos:
    return HttpResponseRedirect(request.path + "?filter=others&sort=newest")