2011-08-17 7 views
2

내가장고 :

www.mysite.com/?param_1=val_1&param_2=val_2 

같은 URL이 내 템플릿에, 나는 이러한 매개 변수에 해당 링크의 목록이 있다고 가정 URL에 현재 GET 매개 변수를 잡아 그 중 하나 (또는 ​​많은)를 수정합니다.

어떻게이 URL을 가져 와서 매개 변수를 추가하거나 수정할 수 있습니까? 매번 요청을 제출하지 않아도되지만 새 URL을 전달하십시오.

예 :

<a href="www.mysite.com/?param_1=val_1&param_2=val_2_modified">val_2_modified</a> 
<a href="www.mysite.com/?param_1=val_1&param_2=val_2&param_3=new_val">new_val</a> 

등등 ...

답변

4

https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/views/main.py#L152

from django.utils.http import urlencode 

def get_query_string(params, new_params=None, remove=None): 
    if new_params is None: new_params = {} 
    if remove is None: remove = [] 
    p = params.copy() 
    for r in remove: 
     for k in p.keys(): 
      if k.startswith(r): 
       del p[k] 
    for k, v in new_params.items(): 
     if v is None: 
      if k in p: 
       del p[k] 
     else: 
      p[k] = v 
    return '?%s' % urlencode(p) 

# get_query_string(dict(request.GET.items()), {'param_2': 'val_2_modified', 'param_3': 'new_val'}) 

단지 (이미위한 템플릿 태그를 작성하는 방법을 잊어 템플릿 태그를 쓰기 템플릿이를 사용하려면 django).

+0

나는 이것을 시험해보고있다 :) :) thanks for templates : http://djangosnippets.org/snippets/553/ 나는 방금 이것을 발견하고 완벽 해 보인다! –