1

views.py に ajax リクエストを送信しようとしていますが、パスの使用方法がわかりません。私のビューは私のサーバー/home/pycode/main/main/apps/builder/views.py. の にあります リクエストを送信しているページは に/home/dbs/www/python.html あります 私の urls.py に何かを追加する必要がありますか?

ビュー.py

#!/usr/bin/env python26
from django.http import HttpResponse
def main(request):
    return HttpResponse("from python with love")

python.html jquery ajax

<script language="JavaScript">
$(document).ready(function() {
$("#myform").submit(function() {

    var myCheckboxes = new Array();
    $("input:checked").each(function() {
       myCheckboxes.push($(this).val());
    });
    $.ajax({
        type: "POST",
        url: '/main',
        data: { myCheckboxes:myCheckboxes },
        success: function(response){
            alert(response);
        }
    });
    return false;
});
});
</script>
4

3 に答える 3

5

ビュー内の関数にアクセスするにurls.pyは、ファイル システム内の場所ではなく、エントリを介して参照します。

django チュートリアル (4 ページ) を読むと、非常に役立ちます。

https://docs.djangoproject.com/en/dev/topics/http/urls/

urls.py では、次のようなエントリを使用して URL を関数にマップします。

urlpatterns = patterns('',
    (r'^main/$', 'apps.builder.views.main'),
)

次に、「/main/」を URL として入力すると、ビュー関数にマップされます。

于 2012-06-12T18:44:23.183 に答える
2

Ajax リクエストは、サーバーに関する限り、他のリクエストと同じです。そうです、urls.py に何かが必要です。

于 2012-06-12T18:47:47.877 に答える
0

また、ajax リクエストの場合は、json レスポンスを使用できます。

# -*- coding: utf-8 -*-

from django.http import HttpResponse
from django.utils import simplejson

class JsonResponse(HttpResponse):
    """ JSON response

    """
    def __init__(self, content, status=None, mimetype=None):
        """
            @param content: string with json, or python dict or tuple
            @param status: Http status
            @param mimetype: response mimetype
        """
        if not isinstance(content, basestring):
            content = simplejson.dumps(content)
        super(JsonResponse, self).__init__(
            content=content, 
            mimetype=mimetype or 'application/json', 
            status=status
        )
        self['Cache-Control'] = 'no-cache'
        self['Pragma'] = 'no-cache'
于 2012-06-12T20:05:45.773 に答える