1

urls.pyファイルの場合:

url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)\&', 'corresponding.view')
url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)', 'corresponding.view')

には常にHTTPGet引数があります/api/user_info/username

問題は、corresponding.view関数で、usernameが「myusername」とに評価されるのではなく、「myusername?clientversion=2.0」のように評価されることですrequest.GET['clientversion'] = "2.0"

最初のurl呼び出しは、そこでアンパサンドをキャッチしようとすることですが、それは役に立ちません。

前もって感謝します。

4

1 に答える 1

4

この質問を参照してください; DjangoのURLConfを使用してクエリパラメータにアクセスすることはありません。?URLリゾルバーを使用して文字を処理しようとして&も、幸福にはつながりません。

次のURLパターンを使用するだけです。

url(r'^api/user_info/(?P<username>\w\+)/$', 'corresponding.view')

関数のclientversionクエリパラメータにアクセスします。corresponding.view()

def view(request):
    client_version = request.GET.get('clientversion')
    ...

または、必須であると言っている場合は、

from django.http import Http404

def view(request):
    try:
        client_version = request.GET['clientversion']
    except KeyError:
        raise Http404
于 2012-08-22T20:09:16.880 に答える