Tích hợp django và javascript
Ghi chú. Nếu trước đây bạn đã cài đặt Show
Chạy ứng dụng ReactChạy lệnh này để di chuyển đến thư mục Chạy lệnh này để thực thi ứng dụng React Một cửa sổ trình duyệt mới sẽ bật lên với Ứng dụng React mới được tạo của bạn. Nếu không, hãy mở trình duyệt của bạn và nhập ReactDOM.(myElement, document.getElementById('root'));2 vào thanh địa chỉ Kết quả Những gì bạn nên biếtTrước khi bắt đầu với React. JS, bạn nên có kinh nghiệm trung cấp về Bạn cũng nên có một số kinh nghiệm với các tính năng JavaScript mới được giới thiệu trong ECMAScript 6 (ES6), bạn sẽ tìm hiểu về chúng trong chương React ES6 Ghi chú. Kể từ Chrome 50, API vị trí địa lý sẽ chỉ hoạt động trên các ngữ cảnh bảo mật như HTTPS. Nếu trang web của bạn được lưu trữ trên một nguồn gốc không an toàn (chẳng hạn như HTTP), các yêu cầu lấy vị trí của người dùng sẽ không còn hoạt động Sử dụng định vị địa lý HTMLPhương thức Ví dụ dưới đây trả về vĩ độ và kinh độ của vị trí của người dùng Ví dụTự mình thử »Ví dụ giải thích
Ví dụ trên là tập lệnh Định vị địa lý rất cơ bản, không xử lý lỗi Xử lý lỗi và từ chốiTham số thứ hai của phương thức Ví dụhàm showError(lỗi) { Thông tin cụ thể về vị tríTrang này đã trình bày cách hiển thị vị trí của người dùng trên bản đồ Vị trí địa lý cũng rất hữu ích cho thông tin cụ thể về vị trí, như
Phương thức getCurrentPosition() - Trả về dữ liệuPhương thức Đối tượng định vị địa lý - Các phương pháp thú vị khácĐối tượng Geolocation còn có các phương thức thú vị khác
Ví dụ dưới đây cho thấy phương pháp Làm cách nào để tạo API Django REST? . (Django 3) tôi đã viết một cuốn sách"Django tách rời". Hiểu và xây dựng các kiến trúc Django tách rời cho giao diện người dùng JavaScript Xin vui lòng đọcBài đăng này bắt đầu từ năm 2019. Hai năm trong phát triển web hiện đại bằng một thời gian dài. Cách tiếp cận được phác thảo ở đây vốn dĩ không tệ, nhưng nó có thể không phù hợp với các nhóm lớn hơn và do các thay đổi có khả năng phá vỡ trong webpack và công cụ liên quan, nên việc theo kịp các thay đổi có thể trở nên khó khăn. Các khung như Tiếp theo. js là một lựa chọn vững chắc hơn để xây dựng các dự án React phức tạp ngày nay Django REST với React. những gì bạn sẽ họcTrong hướng dẫn sau, bạn sẽ học
Django REST với React. yêu cầuĐể làm theo cùng với hướng dẫn, bạn nên có
Sẵn sàng? Thiết lập môi trường ảo Python và dự ánĐiều đầu tiên trước tiên là đảm bảo có sẵn môi trường ảo Python. Tạo một thư mục mới và di chuyển vào đó
Sau khi hoàn tất, hãy tạo và kích hoạt môi trường Python mới
GHI CHÚ. từ bây giờ hãy đảm bảo luôn ở trong thư mục 3 và để môi trường Python hoạt độngBây giờ hãy kéo vào các phụ thuộc
Khi quá trình cài đặt kết thúc, bạn đã sẵn sàng để tạo một dự án Django mới
Bây giờ chúng ta có thể bắt đầu xây dựng ứng dụng Django đầu tiên của mình. một API đơn giản để liệt kê và lưu trữ danh bạ Django REST với React. xây dựng ứng dụng DjangoMột dự án Django có thể có nhiều ứng dụng. Mỗi ứng dụng lý tưởng nên làm một việc. Các ứng dụng Django là mô-đun và có thể tái sử dụng, nếu một dự án khác cần lặp đi lặp lại cùng một ứng dụng, chúng tôi có thể đặt ứng dụng đó vào trình quản lý gói Python và cài đặt nó từ đó Để tạo một ứng dụng mới trong Django, bạn sẽ chạy
Trong trường hợp của chúng tôi, vẫn chạy trong thư mục dự án
Thao tác này sẽ tạo ứng dụng khách hàng tiềm năng mới của chúng ta trong thư mục 3. Cấu trúc dự án của bạn bây giờ nên là
Bây giờ hãy cho Django biết cách sử dụng ứng dụng mới. Mở 5 và thêm ứng dụng vào INSTALLED_APPS
Càng xa càng tốt. Trong phần tiếp theo, chúng tôi sẽ thêm mô hình đầu tiên của chúng tôi Django REST với React. tạo mô hình DjangoVới ứng dụng đã sẵn sàng, đã đến lúc tạo mô hình đầu tiên của chúng tôi. Một mô hình là một đối tượng đại diện cho dữ liệu của bảng của bạn. Hầu như mọi khung web đều có các mô hình và Django cũng không ngoại lệ Một mô hình Django có thể có một hoặc nhiều trường. mỗi trường là một cột trong bảng của bạn. Trước khi tiếp tục, hãy xác định các yêu cầu của chúng tôi đối với ứng dụng chính Vì tôi đang thu thập các liên hệ nên tôi có thể nghĩ ra một mô hình 6 được tạo từ các trường sau
(Vui lòng thêm các trường bổ sung. Như điện thoại chẳng hạn). Chúng ta cũng đừng quên trường dấu thời gian. Django không thêm cột 7 theo mặc địnhMở 8 và tạo mô hình 6
Một lưu ý nhanh về các mô hình. dành thời gian của bạn để kiểm tra tài liệu trường Django. Khi lập kế hoạch cho một mô hình, hãy cố gắng chọn các trường thích hợp nhất cho trường hợp sử dụng của bạn. Với mô hình tại chỗ, hãy tạo di chuyển bằng cách chạy
Cuối cùng di chuyển cơ sở dữ liệu với 0Tuyệt. Trong các phần tiếp theo, chúng ta sẽ nói về serializers và view. Nhưng trước tiên, một lưu ý về thử nghiệm Django REST với React. một rắc thử nghiệmTại thời điểm này, bạn có thể tự hỏi "Valentino, thử nghiệm thì sao?" Tôi đã thấy rất nhiều hướng dẫn về Django bắt đầu như vậy 1đừng làm thế. Không có điểm nào trong việc thử nghiệm cả mô hình Django vanilla hay Django ORM. Đây là một điểm khởi đầu tốt để thử nghiệm ở Django
Đừng kiểm tra những gì đã được kiểm tra. Vậy tôi nên kiểm tra những gì? . Bạn có chế độ xem tùy chỉnh không? . Nhưng, làm thế nào để tôi biết những gì để kiểm tra chính xác? Làm cho mình một việc. Cài đặt vùng phủ sóng 2Sau đó, mỗi khi bạn thêm một số mã vào phạm vi chạy ứng dụng của mình với 3Sau đó tạo báo cáo 4Bạn sẽ thấy chính xác những gì cần kiểm tra. Nếu bạn thích xem báo cáo trên dòng lệnh hãy chạy 5Đợi đã, bạn vẫn ở đó chứ? . Giữ chặt, trong phần tiếp theo chúng ta sẽ xem xét các bộ nối tiếp Để tìm hiểu thêm về thử nghiệm trong Django, hãy xem Bảng kiểm thử thử nghiệm Django Trình nối tiếp Django RESTtuần tự hóa là gì? . Sau khi chuyển đổi một đối tượng, chúng ta có thể lưu nó vào một tệp hoặc gửi nó qua mạng Tại sao tuần tự hóa là cần thiết? . đó là một lớp Python. Làm cách nào để kết xuất một lớp Python thành JSON trong trình duyệt? Một bộ nối tiếp cũng hoạt động theo cách khác. nó chuyển đổi JSON thành các đối tượng. Bằng cách này bạn có thể
Tóm lại. bộ nối tiếp Django REST là bắt buộc để hoạt động trên các mô hình thông qua API. Tạo một tệp mới có tên 0. 1 lấy mô hình 6 của chúng tôi và một số trường 6Như bạn có thể thấy, chúng tôi đang phân lớp 3. Một 3 trong Django REST giống như một 5. Nó phù hợp bất cứ khi nào bạn muốn ánh xạ chặt chẽ Mô hình thành bộ nối tiếplưu và đóng tập tin. Trong các phần tiếp theo, chúng ta sẽ xem xét các lượt xem và url Thiết lập kiểm soát. eh các lượt xemĐến từ các khung khác, bạn có thể thấy ngạc nhiên khi Django không có bộ điều khiển Bộ điều khiển đóng gói logic để xử lý yêu cầu và trả về phản hồi. Trong kiến trúc MVC truyền thống có Model, View và Controller. Ví dụ về các khung MVC là Rails, Phoenix, Laravel Django là một khung MVT. Tức là Model – View – Template. Có nhiều loại chế độ xem trong Django. chế độ xem chức năng, chế độ xem dựa trên lớp và chế độ xem chung Một số nhà phát triển thích chế độ xem chức năng thay cho chế độ xem dựa trên lớp. Cá nhân tôi là một fan hâm mộ lớn của cái sau. Khi tôi chọn Django, đó là vì tôi đánh giá cao tốc độ phát triển, DRY, ít mã hơn Tôi không thấy ích gì khi viết các lượt xem bằng tay khi đã có sẵn một tập hợp các giá trị mặc định lành mạnh. Đây là quy tắc ngón tay cái của tôi Chỉ sử dụng chế độ xem chức năng nếu thời gian dành cho việc tùy chỉnh chế độ xem chung nhiều hơn thời gian viết chế độ xem bằng tay. Như với Django đơn giản, trong khung Django REST có nhiều cách để viết các khung nhìn
Đối với phạm vi của hướng dẫn này, tôi sẽ sử dụng các chế độ xem API chung. ứng dụng đơn giản của chúng tôi nên
Bằng cách xem tài liệu về chế độ xem API chung, chúng ta có thể thấy rằng có chế độ xem để liệt kê và tạo mô hình. 6, lấy một bộ truy vấn và một serializer_classMở 7 và tạo chế độ xem 7Đó là. Với 3 dòng mã, chúng tôi đã tạo chế độ xem để xử lý các yêu cầu GET và POST. Bây giờ còn thiếu gì? . Nói cách khác, chúng ta nên ánh xạ URL tới các lượt xem Làm sao? Thiết lập lộ trình. uhm các urlMục tiêu của chúng ta là kết nối 8 với 9. Nói cách khác, chúng tôi muốn thực hiện các yêu cầu GET và POST tới 9 để liệt kê và tạo mô hìnhĐể định cấu hình ánh xạ URL, hãy bao gồm các url của ứng dụng trong 1 8Tiếp theo, tạo một tệp mới có tên 2. Trong tệp này, chúng tôi sẽ kết nối LeadListCreate với 9 9Cuối cùng, hãy kích hoạt rest_framework trong 4. Mở 5 và thêm ứng dụng vào đó 0Bây giờ bạn sẽ có thể chạy kiểm tra độ tỉnh táo với 1Đi qua http. //127. 0. 0. 1. 8000/api/lead/ và bạn sẽ thấy API có thể duyệt GHI CHÚ. bạn nên tắt API có thể duyệt trong quá trình sản xuất với cấu hình này 2Trong khi tạo một số liên hệ ở dạng dựng sẵn. Trong phần tiếp theo chúng ta sẽ đi vào React Django và React cùng nhauRất nhiều nhà phát triển Python gặp khó khăn với một câu hỏi đơn giản. Làm cách nào để dán Django và $insert_frontend_library_here lại với nhau? Bộ định tuyến React có nên đảm nhận việc định tuyến không? . Tôi muốn nói "nó phụ thuộc". Nó phụ thuộc vào lượng JavaScript bạn cần. Nhưng bao nhiêu JavaScript là quá nhiều? Đùa sang một bên, có nhiều cách để thiết lập dự án Django với React. Tôi thấy các mẫu sau (phổ biến đối với hầu hết mọi khung web) lựa chọn 1. Phản ứng trong ứng dụng Django "frontend" của riêng mình. tải một mẫu HTML duy nhất và để React quản lý giao diện người dùng (khó khăn. trung bình) Lựa chọn 2. Django REST dưới dạng API độc lập + Phản ứng dưới dạng SPA độc lập (độ khó. khó, nó liên quan đến một số hình thức xác thực dựa trên mã thông báo) Tùy chọn 3. Pha trộn và kết hợp. các ứng dụng React nhỏ bên trong các mẫu Django (khó khăn. đơn giản, nhưng không thể duy trì lâu dài) Và đây là lời khuyên của tôi. Nếu bạn mới bắt đầu với Django REST và React, hãy tránh tùy chọn 2. Thay vào đó, hãy chọn tùy chọn số 1 (Phản ứng trong ứng dụng Django "giao diện người dùng" của riêng nó) nếu
Trên thực tế, việc giữ React gần hơn với Django giúp lý do xác thực dễ dàng hơn. Bạn có thể khai thác xác thực dựng sẵn Django để đăng ký và đăng nhập người dùng Sử dụng xác thực Phiên tốt và đừng lo lắng quá nhiều về mã thông báo và JWT Chọn tùy chọn số 3 (các ứng dụng React nhỏ bên trong các mẫu Django) nếu
Trong phần tiếp theo, chúng ta sẽ thực hiện với tùy chọn 1 Thiết lập React và webpacktừ chối trách nhiệm. Hướng dẫn của tôi miễn phí, không ràng buộc. Điều này có nghĩa là tôi không có nghĩa vụ phải cập nhật chúng liên tục lên các bản phát hành mới nhất của các gói. Cũng xin lưu ý rằng, công cụ giao diện người dùng thay đổi nhanh đến mức tôi không thể cập nhật từng bài đăng trên blog một cách nhanh chóng khi gói web giới thiệu các thay đổi đột phá trong cấu hình. Nếu có điều gì đó không phù hợp với bạn, hãy gửi cho tôi một email lịch sự và tôi sẽ cố gắng khắc phục hướng dẫn nếu có thời gian. Thưởng thức Chúng tôi đã biết cách tạo ứng dụng Django, vì vậy hãy làm lại cho ứng dụng giao diện người dùng 3Bạn sẽ thấy một thư mục mới có tên là frontend bên trong thư mục dự án của bạn 4Hãy cũng chuẩn bị một cấu trúc thư mục để chứa các thành phần React 5và các tập tin tĩnh 6Tiếp theo chúng ta sẽ thiết lập React, webpack và babel. Di chuyển trong thư mục frontend và khởi tạo môi trường 7Tiếp theo cài đặt webpack và webpack cli 8Bây giờ hãy mở 6 và định cấu hình hai tập lệnh, một dành cho sản xuất và một dành cho phát triển 9Đóng tệp và lưu nó. Bây giờ hãy cài đặt babel để dịch mã của chúng ta 0Tiếp theo kéo vào React 1Bây giờ định cấu hình babel với một 7 (vẫn bên trong 8) 2GHI CHÚ. nếu bạn đang nhận regeneratorRuntime không được xác định bằng async/await trong các thành phần React của bạn Và cuối cùng tạo một 9 để cấu hình babel-loader 3Bây giờ chúng tôi đã sẵn sàng để lăn. (Chào mừng đến với lối vào hiện đại. ) Django REST với React. chuẩn bị ứng dụng frontendĐiều đầu tiên trước tiên hãy tạo chế độ xem trong 0 4Sau đó, tạo một mẫu trong 1 5Như bạn có thể thấy mẫu sẽ gọi 2 là gói webpack của chúng tôi. Định cấu hình ánh xạ URL mới để bao gồm giao diện người dùng trong 3 6Tiếp theo, tạo một tệp mới có tên 4 7Cuối cùng kích hoạt ứng dụng giao diện người dùng trong 5 8Tại thời điểm này, bạn có thể thử trên http. //127. 0. 0. 1. 8000/ (trong khi vẫn chạy máy chủ phát triển Django). Bây giờ bạn sẽ thấy một trang trống Trong phần tiếp theo, cuối cùng chúng ta sẽ thêm React vào hỗn hợp Django REST với React. giao diện ReactĐể giữ cho mọi thứ đơn giản, chúng tôi sẽ tạo một thành phần React đơn giản sẽ hiển thị dữ liệu của chúng tôi. Nếu bạn chưa có bất cứ thứ gì trong cơ sở dữ liệu thì đây là thời điểm tốt để điền vào ứng dụng của bạn một số liên hệ Chạy máy chủ phát triển và truy cập http. //127. 0. 0. 1. 8000/api/lead/ để chèn một số khách hàng tiềm năng Bây giờ hãy tạo một tệp mới trong 6. Nó sẽ là một thành phần React để tìm nạp và hiển thị dữ liệu 9GHI CHÚ. bạn có thể viết thành phần giống hệt như một hàm với móc 7lưu và đóng tập tin. Bây giờ hãy tạo điểm vào cho webpack trong 8 và nhập thành phần của bạn 0Bây giờ chúng tôi đã sẵn sàng để thử nghiệm mọi thứ. Chạy webpack với 1khởi động máy chủ phát triển 1và đi qua http. //127. 0. 0. 1. 8000/. (Nếu bạn thấy "Đã xảy ra sự cố", hãy đảm bảo di chuyển và điền vào cơ sở dữ liệu của bạn) Cuối cùng, bạn sẽ thấy dữ liệu của mình trong một thành phần React Khá đơn giản. Nhưng nó đã có tác dụng Django REST với React. kết luận, đi đâu từ đâyTrong hướng dẫn này, chúng tôi đã xây dựng một dự án Django REST/React đơn giản. Bạn đã học cách
Vui lòng thử nghiệm bằng cách thêm nhiều tính năng hơn vào dự án (như xác thực) Cách tiếp cận chúng tôi đã thực hiện khi kết nối giao diện người dùng React với Django hơi đơn giản, nhưng thể hiện nền tảng vững chắc về những gì bạn sẽ làm trong thế giới thực Để tìm hiểu thêm về những thách thức bạn sẽ gặp phải với webpack và Django trong các dự án lớn hơn, hãy nhớ đọc thêm Sử dụng webpack với Django. nó không phải là dễ dàng như bạn nghĩ Tôi cũng đã có một cuộc nói chuyện về chủ đề. "Tách rời Django với Django REST và React" tại Pycon Italy X ở Florence. Trang trình bày ở đây |