Mặc dù điều này không hoàn toàn theo tinh thần SO, tôi thích câu hỏi này, bởi vì tôi đã gặp rắc rối tương tự khi tôi bắt đầu, vì vậy tôi sẽ hướng dẫn nhanh cho bạn. Rõ ràng là bạn không hiểu các nguyên tắc đằng sau chúng (đừng coi đó là một hành vi phạm tội, nhưng nếu bạn đã không yêu cầu).
Django là phía máy chủ . Điều đó có nghĩa là, giả sử một khách hàng truy cập URL, bạn có một chức năng bên trongviews
hiển thị những gì anh ta nhìn thấy và trả về phản hồi trong HTML. Hãy chia nó thành các ví dụ:
lượt xem:
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>
url:
url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),
Đó là một ví dụ về cách sử dụng đơn giản nhất. Đi đến 127.0.0.1:8000/hello
có nghĩa là một yêu cầu cho hello()
chức năng, 127.0.0.1:8000/home
sẽ trả lạiindex.html
và thay thế tất cả các biến như đã hỏi (bây giờ bạn có thể biết tất cả điều này).
Bây giờ hãy nói về AJAX . Các cuộc gọi AJAX là mã phía máy khách thực hiện các yêu cầu không đồng bộ. Nghe có vẻ phức tạp, nhưng nó đơn giản có nghĩa là nó thực hiện một yêu cầu cho bạn trong nền và sau đó xử lý phản hồi. Vì vậy, khi bạn thực hiện cuộc gọi AJAX cho một số URL, bạn sẽ nhận được cùng một dữ liệu bạn sẽ nhận được khi người dùng đến địa điểm đó.
Ví dụ, một cuộc gọi AJAX 127.0.0.1:8000/hello
sẽ trả lại điều tương tự như khi bạn truy cập nó. Chỉ lần này, bạn có nó bên trong một hàm JavaScript và bạn có thể xử lý nó theo cách bạn muốn. Hãy xem xét một trường hợp sử dụng đơn giản:
$.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');
}
});
Quy trình chung là thế này:
- Cuộc gọi đến URL
127.0.0.1:8000/hello
như thể bạn đã mở một tab mới và tự thực hiện.
- Nếu nó thành công (mã trạng thái 200), hãy thực hiện chức năng để thành công, nó sẽ cảnh báo dữ liệu nhận được.
- Nếu thất bại, làm một chức năng khác.
Bây giờ chuyện gì sẽ xảy ra ở đây? Bạn sẽ nhận được một cảnh báo với 'xin chào thế giới' trong đó. Điều gì xảy ra nếu bạn thực hiện cuộc gọi AJAX đến nhà? Điều tương tự, bạn sẽ nhận được một cảnh báo nêu rõ <h1>Hello world, welcome to my awesome site</h1>
.
Nói cách khác - không có gì mới về các cuộc gọi AJAX. Chúng chỉ là một cách để bạn cho phép người dùng lấy dữ liệu và thông tin mà không cần rời khỏi trang, và nó làm cho một thiết kế trơn tru và rất gọn gàng của trang web của bạn. Một vài hướng dẫn bạn cần lưu ý:
- Tìm hiểu jQuery . Tôi không thể nhấn mạnh điều này đủ. Bạn sẽ phải hiểu nó một chút để biết cách xử lý dữ liệu bạn nhận được. Bạn cũng cần hiểu một số cú pháp JavaScript cơ bản (không xa python, bạn sẽ quen với nó). Tôi thực sự khuyên bạn nên hướng dẫn bằng video của Envato cho jQuery , chúng rất tuyệt và sẽ đưa bạn đi đúng hướng.
- Khi nào nên sử dụng JSON? . Bạn sẽ thấy rất nhiều ví dụ trong đó dữ liệu được gửi bởi các khung nhìn Django trong JSON. Tôi đã không đi sâu vào chi tiết về điều đó, bởi vì nó không quan trọng bằng cách nào để làm điều đó (có rất nhiều lời giải thích đầy đủ) và quan trọng hơn rất nhiều khi . Và câu trả lời cho điều đó là - dữ liệu JSON là dữ liệu tuần tự. Đó là, dữ liệu bạn có thể thao tác. Giống như tôi đã đề cập, một cuộc gọi AJAX sẽ lấy phản hồi như thể người dùng tự thực hiện. Bây giờ hãy nói rằng bạn không muốn gây rối với tất cả các html và thay vào đó muốn gửi dữ liệu (có thể là một danh sách các đối tượng). JSON tốt cho việc này, bởi vì nó gửi nó dưới dạng một đối tượng (dữ liệu JSON trông giống như một từ điển python), và sau đó bạn có thể lặp lại nó hoặc làm một cái gì đó khác mà không cần phải lọc qua html vô dụng.
- Thêm nó cuối cùng . Khi bạn xây dựng một ứng dụng web và muốn triển khai AJAX - hãy tự giúp mình. Đầu tiên, xây dựng toàn bộ ứng dụng hoàn toàn không có bất kỳ AJAX nào. Xem mọi thứ đang hoạt động. Sau đó, và chỉ sau đó, bắt đầu viết các cuộc gọi AJAX. Đó là một quá trình tốt giúp bạn học hỏi rất nhiều.
- Sử dụng các công cụ phát triển của chrome . Vì các cuộc gọi AJAX được thực hiện ở chế độ nền nên đôi khi rất khó để gỡ lỗi chúng. Bạn nên sử dụng các công cụ dành cho nhà phát triển chrome (hoặc các công cụ tương tự như fireorms) và
console.log
những thứ để gỡ lỗi. Tôi sẽ không giải thích chi tiết, chỉ cần google xung quanh và tìm hiểu về nó. Nó sẽ rất hữu ích cho bạn.
- Nhận thức về CSRF . Cuối cùng, hãy nhớ rằng yêu cầu bài trong Django yêu cầu
csrf_token
. Với các cuộc gọi AJAX, rất nhiều lần bạn muốn gửi dữ liệu mà không cần làm mới trang. Bạn có thể sẽ phải đối mặt với một số rắc rối trước khi cuối cùng bạn nhớ điều đó - chờ đã, bạn quên gửi csrf_token
. Đây là một rào cản dành cho người mới bắt đầu được biết đến trong tích hợp AJAX-Django, nhưng sau khi bạn học cách làm cho nó chơi tốt, nó dễ như một chiếc bánh.
Đó là tất cả mọi thứ xuất hiện trong đầu tôi. Đó là một chủ đề rộng lớn, nhưng vâng, có lẽ không có đủ ví dụ ngoài đó. Chỉ cần làm việc theo cách của bạn ở đó, từ từ, cuối cùng bạn sẽ nhận được nó.