1

この質問は、json クエリに関する私の知識に大きな穴があることを明らかにするかもしれませんが、次の URL を使用してビューに表示する JSON データを取得しようとしています。

http://localhost:8000/structures/hydrants/json?id=%3D2/

これが私のURL正規表現です:

url(r'^hydrants/json\\?id=(?P<hydrant_id>\d+)/$', views.hydrant_json, name='hydrant_json'),

とビュー:

def hydrant_json(request, hydrant_id):
    hydrant = get_object_or_404(Hydrant, pk=hydrant_id)
    data = [hydrant.json()]
    return HttpResponse(json.dumps(data), content_type='application/json')

明らかに、疑問符はそれを捨てています。正規表現を作成すると

url(r'^hydrants/json/id=(?P<hydrant_id>\d+)/$', views.hydrant_json, name='hydrant_json'),

次に、次の URL が機能します。

http://localhost:8000/structures/hydrants/json/id%3D2/

前もって感謝します!

4

1 に答える 1

1

データをパラメーターとして送信する場合は、次のGETように簡単に実行できます。

url(r'^hydrants/json/$', views.hydrant_json, name='hydrant_json'),
url(r'^hydrants/json/(?P<hydrant_id>\d+)/$', views.hydrant_json, name='hydrant_json_with_key'),

とビュー:

def hydrant_json(request, hydrant_id=None):
    if not hydrant_id:
       hydrant_id = request.GET.get('id')

    if not hydrant_id: #if hydrant_id is not received for some reason, throw 404. 
        raise Http404

    hydrant = get_object_or_404(Hydrant, pk=hydrant_id)
    data = [hydrant.json()]
    return HttpResponse(json.dumps(data), content_type='application/json')

ここでは、ビューに送信する柔軟な方法を定義hydrant_idしています。

デフォルトでは、GET リクエストの場合、request.GETすべての get パラメータがあります - 例:?id=123

hydrant_idまた、 URL の一部として送信したい場合は、

http://localhost:8000/structures/hydrants/json/302/

URLは数字のみを3D2探しているため、正規表現の URL として一致することはありません。\d+

于 2013-06-13T17:06:27.327 に答える