2011-08-17 12 views
2

iがジャンゴ:

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

のようなURLを持っていると私のテンプレートで、私はそれらのパラメータに対応するリンクのリストを持っていると仮定したURLに現在のGETパラメータを取得し、それらの1つ(または多くを)変更します。

このURLを取得してパラメータを追加または変更すると、毎回getリクエストを送信する必要はありませんが、新しい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/私はちょうどこれを見つけ出して、完璧と思われます! –