Незважаючи на те, що це не зовсім в дусі SO, я люблю це питання, тому що у мене були ті ж проблеми, коли я починав, тому я дам вам короткий посібник. Очевидно, ви не розумієте принципів, які стоять за ними (не сприймайте це як образа, але якби ви цього не зробили, ви не запитували).
Джанго на стороні сервера . Це означає, що, скажімо, клієнт переходить до 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? . Ви побачите чимало прикладів, коли дані, надіслані видами Джанго, є в JSON. Я не вдавався в деталі з цього приводу, тому що не важливо, як це зробити (є багато пояснень) і набагато важливіше, коли . І відповідь на це - дані JSON - це серіалізовані дані. Тобто, даними, якими можна маніпулювати. Як я вже згадував, дзвінок AJAX отримає відповідь так, як ніби користувач це зробив сам. Тепер скажіть, що ви не хочете возитися з усіма html, а натомість хочете надсилати дані (можливо, список об’єктів). JSON хороший для цього, оскільки він надсилає його як об’єкт (дані JSON схожі на словник python), а потім ви можете перебирати його чи робити щось інше, що позбавляє від необхідності просіювати непотрібний HTML.
- Додайте останнє . Коли ви створюєте веб-додаток і хочете реалізувати AJAX - зробіть собі послугу. По-перше, створити весь додаток, повністю позбавлений будь-якого AJAX. Дивіться, що все працює. Тоді і тільки після цього починайте писати дзвінки AJAX. Це хороший процес, який допомагає вам також багато чому навчитися.
- Використовуйте інструменти для розробників chrome . Оскільки AJAX дзвінки виконуються у фоновому режимі, іноді дуже важко їх налагодити. Слід скористатися інструментами хронічного розробника (або подібними інструментами, такими як firebug) та
console.log
речами для налагодження. Я не буду докладно пояснювати, просто гугл навколо і дізнайся про це. Вам було б дуже корисно.
- Поінформованість про КСВР . Нарешті, пам’ятайте, що для запитів на публікації в Джанго потрібні
csrf_token
. Під час дзвінків AJAX ви багато разів хочете надсилати дані, не оновлюючи сторінку. Ви, мабуть, зіткнетеся з деякими неприємностями, перш ніж ви нарешті згадаєте про це - зачекайте, ви забули відправити csrf_token
. Це відомий початковий блок-перешкоди в інтеграції AJAX-Django, але після того, як ви навчитеся робити його добре грати, це легко як пиріг.
Ось і все, що приходить мені в голову. Це величезна тема, але так, мабуть, прикладів там недостатньо. Просто працюйте там, повільно, ви отримаєте це врешті-решт.