2009-06-05 14 views
1

スラッシュの後にWHOLE URLをスクリプトに渡します。私が行う場合:urls.pyで照会パラメーターを一致させるようにします。

url(r'^(?P<id>.*)$', alias.get, name="alias"), 

それから私は、唯一のパスコンポーネントではなく、私の関数に渡されたクエリパラメータを取得します。私はしなければならない:

 
def urlencode(dict) : 
    if len(dict) == 0 : return "" 
    params = {} 
    for k, v in dict.items() : 
     params[k] = v.encode('utf-8') 

    return "?" + urllib.urlencode(params) 

def get(id) : 
    id += urlencode(request.GET) 

私はこれを多くの私の見解のためにやっており、私はそれを忘れてバグを作り続けています。 urls.pyにクエリ文字列を含むすべてのものと一致するように指示する方法はありますか?

答えて

1

いいえ、それを行う方法はありません。 GETパラメータはurls.pyに渡されません。

なぜあなたはこれを行う必要があるのだろうか。なぜあなたの意見の多くはGETクエリーストーンに依存していますか? Djangoのやり方は、クエリーストリングではなく、URLそのものの一部にすることです。

+0

私のURLは、http://example.com/alias/http:// stackoverflow.com/users/90025/paul-tarjanのようになります。つまり、誰かが自分のURLの末尾に投稿します。よく投稿されたURLには、「エイリアス」の一部としてキャプチャしたいクエリパターンがあります。 –

3

ビュー内で、request.get_full_path()というクエリ文字列を含むURLを取得できます。

http://servername.com部分を含める場合は、request.build_absolute_uri()もあります。

関連する問題