Хотя это не совсем в духе ТАК, мне нравится этот вопрос, потому что у меня были те же проблемы, когда я начинал, поэтому я дам вам краткое руководство. Очевидно, вы не понимаете принципы, стоящие за ними (не воспринимайте это как оскорбление, но если бы вы это сделали, вы бы не спрашивали).
Джанго на стороне сервера . Это означает, что, скажем, клиент идет по URL, у вас есть функция, views
которая отображает то, что он видит, и возвращает ответ в HTML. Давайте разберем это на примеры:
views.py:
def hello(request):
return HttpResponse('Hello World!')
def home(request):
return render_to_response('index.html', {'variable': 'world'})
index.html:
<h1>Hello {{ variable }}, welcome to my awesome site</h1>
urls.py:
url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),
Это пример простейшего использования. Переход к значению 127.0.0.1:8000/hello
означает запрос к hello()
функции, переход к функции 127.0.0.1:8000/home
вернет index.html
и заменит все переменные в соответствии с запросом (вы, вероятно, уже знаете все это).
Теперь поговорим об AJAX . AJAX-вызовы - это код на стороне клиента, выполняющий асинхронные запросы. Это звучит сложно, но это просто означает, что он делает запрос для вас в фоновом режиме, а затем обрабатывает ответ. Поэтому, когда вы делаете AJAX-вызов для какого-то URL, вы получаете те же данные, которые вы получаете, когда пользователь идет в это место.
Например, вызов AJAX 127.0.0.1:8000/hello
вернет то же самое, что и при посещении. Только на этот раз у вас есть это внутри функции JavaScript, и вы можете работать с ней так, как захотите. Давайте посмотрим на простой вариант использования:
$.ajax({
url: '127.0.0.1:8000/hello',
type: 'get', // This is the default though, you don't actually need to always mention it
success: function(data) {
alert(data);
},
failure: function(data) {
alert('Got an error dude');
}
});
Общий процесс таков:
- Вызов переходит на URL,
127.0.0.1:8000/hello
как будто вы открыли новую вкладку и сделали это самостоятельно.
- Если это успешно (код состояния 200), выполните функцию для успеха, которая предупредит полученные данные.
- Если не получается, сделайте другую функцию.
Что теперь будет здесь? Вы получите предупреждение с «Привет мир» в нем. Что произойдет, если вы сделаете AJAX звонок домой? То же самое, вы получите предупреждение с указанием <h1>Hello world, welcome to my awesome site</h1>
.
Другими словами - в вызовах AJAX нет ничего нового. Это просто способ дать вам возможность получать данные и информацию, не покидая страницы, и это обеспечивает плавный и очень аккуратный дизайн вашего сайта. Несколько рекомендаций, которые вы должны принять к сведению:
- Узнайте JQuery . Я не могу подчеркнуть это достаточно. Вам нужно немного это понять, чтобы понять, как обрабатывать полученные данные. Вам также нужно понять некоторый базовый синтаксис JavaScript (недалеко от Python, вы привыкнете к нему). Я настоятельно рекомендую видеоуроки Envato для jQuery , они великолепны и помогут вам выбрать правильный путь.
- Когда использовать JSON? , Вы увидите много примеров, когда данные, отправляемые представлениями Django, находятся в формате JSON. Я не стал вдаваться в подробности, потому что не важно, как это сделать (имеется множество объяснений), и гораздо важнее, когда . И ответ на этот вопрос - данные JSON являются сериализованными данными. То есть данными, которыми вы можете манипулировать. Как я уже говорил, AJAX-вызов будет получать ответ, как если бы пользователь сделал это сам. Теперь скажите, что вы не хотите связываться со всеми html-файлами, а вместо этого хотите отправлять данные (возможно, список объектов). JSON хорош для этого, потому что он отправляет его как объект (данные JSON выглядят как словарь python), а затем вы можете перебирать его или делать что-то еще, что устраняет необходимость просеивать бесполезный html.
- Добавьте это в последнюю очередь . Когда вы создаете веб-приложение и хотите реализовать AJAX - сделайте себе одолжение. Во-первых, создайте приложение полностью без AJAX. Смотри что все работает. Тогда и только тогда начните писать вызовы AJAX. Это хороший процесс, который также помогает вам многому научиться.
- Используйте инструменты разработчика Chrome . Поскольку вызовы AJAX выполняются в фоновом режиме, иногда их очень трудно отладить. Вы должны использовать инструменты разработчика Chrome (или аналогичные инструменты, такие как firebug) и другие
console.log
вещи для отладки. Я не буду подробно объяснять, просто погуглите и узнайте об этом. Это было бы очень полезно для вас.
- CSRF осведомленность . Наконец, помните, что для отправки запросов в Django требуется
csrf_token
. С вызовами AJAX, часто вы хотели бы отправлять данные без обновления страницы. Вы , вероятно, столкнутся некоторые проблемы , прежде чем, наконец , помните , что - ждать, вы забыли отправить csrf_token
. Это известное препятствие для начинающих в интеграции AJAX-Django, но после того, как вы узнаете, как заставить его играть хорошо, это просто как пирог.
Это все, что приходит мне в голову. Это обширная тема, но да, вероятно, там не достаточно примеров. Просто прокладывайте себе путь, медленно, в конце концов, вы получите это.