AoA,如何使用参数(如果我有视图)转到特定的URL
def search(request):
Run Code Online (Sandbox Code Playgroud)
并在urls.py
^search/$
Run Code Online (Sandbox Code Playgroud)
而我需要做的是重定向 search/?item=4
c = {}
render_to_response("search.html",c)
Run Code Online (Sandbox Code Playgroud)
工作正常,但是
render_to_response("search.html/?item=" + itemID, c )
Run Code Online (Sandbox Code Playgroud)
它说找不到模板(我知道没有像search.html /?item =这样的模板)但是如何传递参数或使用查询字符串进行重定向?
Saa*_*lah 23
答案很简单.使用反向和传递url的名称可以使用查询字符串重定向到url
url(r'^search/$', views.search, name='search_view')
Run Code Online (Sandbox Code Playgroud)
from django.shortcuts import redirect, reverse
# in method
return redirect(reverse('search_view') + '?item=4')
Run Code Online (Sandbox Code Playgroud)
我知道这个问题有点旧,但有人会在搜索重定向时遇到查询字符串,所以这是我的解决方案:
import urllib
from django.shortcuts import redirect
def redirect_params(url, params=None):
response = redirect(url)
if params:
query_string = urllib.urlencode(params)
response['Location'] += '?' + query_string
return response
def your_view(request):
your_params = {
'item': 4
}
return redirect_params('search_view', your_params)
Run Code Online (Sandbox Code Playgroud)
如果你已经有一个请求(带有包含一些参数的 GET),并且你想重定向到具有相同 args、kwargs 和参数的不同视图,我们可以使用 QueryDict 对象对自身进行 url 编码:
def view(request, *args, **kwargs):
return redirect(
reverse('your:view:path', args=args, kwargs=kwargs) +
'?' + request.GET.urlencode()
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13030 次 |
| 最近记录: |