2012-06-12 2 views
1

Я пытаюсь отправить запрос ajax на мои view.py, но я не знаю, как использовать этот путь. Мои взгляды размещены на моем сервере по адресу /home/pycode/main/main/apps/builder/views.py. Страница, с которой я посылаю запрос, находится по адресу /home/dbs/www/python.html Нужно ли что-то добавить на мой urls.py?django simple ajax request

views.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> 

ответ

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'), 
) 

Тогда всякий раз, когда вы набираете «/ главная /` как URL она отображается на ваш взгляд функция.

+0

Хороший ответ. К OP: если вы включаете конечную косую черту в '/ main /', обязательно добавьте ее в URL-адрес в javascript, иначе вы можете столкнуться с проблемами. – Alasdair

+0

, но мое приложение должно быть расположено в '/ home/dbs/www /' с моим сайтом или просто должно быть где-то на сервере? – user1442957

+0

@ user1442957 ваше приложение может быть расположено в любом месте. Если вы используете dev-сервер, ваше приложение будет инициализировано, когда вы сделаете запрос на его порт по умолчанию: 8000, поэтому любой запрос 'localhost: 8000' войдет в ваше приложение – dm03514

2

Запрос Ajax аналогичен любому другому запросу в отношении сервера. Итак, да, вам нужно что-то в urls.py.

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'