Tin tức và phân tích của tất cả các thiết bị di động

Làm cách nào để tạo ứng dụng demo Django trên web bằng Ngrok?

Hãy tìm hiểu cách làm cho ứng dụng demo Django có sẵn trên web. Đó là không triển khai nó vào dịch vụ lưu trữ của bạn.

Việc thiết lập môi trường triển khai theo giai đoạn chỉ để hiển thị bản demo của ứng dụng Django là điều tồi tệ. Hơn nữa, nếu bạn chỉ cần URL trong vài phút để hiển thị nó cho khách hàng hoặc thành viên nhóm.

Tùy chọn tốt nhất là sử dụng một công cụ để hiển thị máy chủ cục bộ hiện tại. Một cách chính xác! Mọi người từ khắp nơi trên thế giới sẽ có thể xem những gì đang xảy ra trên máy chủ cục bộ của bạn.

Đối với điều này, chúng tôi sẽ sử dụng Ngrok. Công cụ này sẽ cho phép chúng tôi tạo các URL công khai dựa trên các cổng cục bộ trên máy tính của chúng tôi. Tất cả điều này nhờ vào sự kỳ diệu của Đường hầm.

Trước khi bắt đầu, tất cả mã hoạt động trong hướng dẫn này sẽ có sẵn trong kho lưu trữ Github này.

điều kiện tiên quyết

Nên biết tất cả những điều cơ bản này. Mặc dù có khả năng là bạn có thể làm theo hướng dẫn này mà không gặp vấn đề gì thêm.

Xây dựng ứng dụng Django

Để có hướng dẫn từng bước, tôi sẽ giải thích quy trình tạo dự án Django. Nếu bạn đã có nó, bạn có thể bỏ qua phần này.

Môi trường ảo

Trước hết, hãy tạo cái gọi là môi trường ảo Python.

  • Vì vậy, hãy mở một thiết bị đầu cuối hệ thống (hoặc shell).
  • Nếu việc mở thiết bị đầu cuối hệ thống có vẻ quá phức tạp đối với bạn, hãy thử sử dụng thiết bị đầu cuối tích hợp của trình soạn thảo mã.
  • Nhấp vào Terminal > New Terminal và một trình bao sẽ xuất hiện ở cuối màn hình.
  • Nhập lệnh sau để tạo môi trường ảo bằng công cụ Python tích hợp.
python -m venv .venv

Về cơ bản điều này có nghĩa là:

Này Python, tạo một lệnh môi trường ảo (-m venv) có tên là .venv

  • Bây giờ nếu bạn liệt kê các tệp trong thư mục hiện tại, bạn sẽ thấy thư mục .venv.
$ ls -l
drwxr-xr-x    - daniel 30 abr 23:12 .venv
# Other files ...
  • Để kích hoạt môi trường ảo, chúng ta gọi lệnh nguồn.
source .venv/bin/activate
  • Nếu bạn tìm thấy bất kỳ vấn đề nào, vui lòng tham khảo bảng bên dưới được lấy từ tài liệu chính thức về python.

Nền tảng
Vỏ bọc
Lệnh kích hoạt môi trường ảo
VỊ TRÍ
bash/zsh
$ nguồn /bin/kích hoạt


nguồn $ /bin/activate.fish

csh/tcsh
nguồn $ /bin/activate.csh

lõi PowerShell
$ /bin/Kích hoạt.ps1
các cửa sổ
cmd.exe
C:> Scriptsactivate.bat

PowerShell
PS C:> ScriptsActivate.ps1

Bây giờ, nếu bạn đã chạy đúng lệnh, trình bao của bạn sẽ chứa tên của môi trường ảo.

$ source .venv/bin/activate.fish

(.venv) $ 

Cài đặt Django

Sau khi kích hoạt môi trường ảo, bây giờ bạn có thể cài đặt bất kỳ phiên bản nào của Django. Trong trường hợp này, cài đặt phiên bản mới nhất là một lựa chọn tốt.

$ pip install django
Collecting django
  Using cached Django-3.2-py3-none-any.whl (7.9 MB)
Collecting pytz
  Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting asgiref<4,>=3.3.2
  Using cached asgiref-3.3.4-py3-none-any.whl (22 kB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB)
Installing collected packages: pytz, asgiref, sqlparse, django
Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1

Bây giờ là lúc tạo cấu trúc cơ bản của dự án ứng dụng Django mà bạn muốn chia sẻ.

$ django-admin startproject mytestingproject

Điều này sẽ tạo ra một dự án Django có tên mytestingproject. Sau khi được tạo, chúng tôi muốn bạn muốn vào thư mục chứa cấu trúc dự án. Vì vậy, hãy bắt đầu và khởi động máy chủ Django.

# Enter to the project directory
(.venv)$ cd mytestingproject/

# Listing the files inside the project
(.venv) $ ls
mytestingproject  manage.py 

Bây giờ bạn đã vào trong, hãy khởi động máy chủ Django để xem nó trông như thế nào.

 (.venv) $python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 01, 2021 - 04:34:25
Django version 3.2, using settings 'mytestingproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Về cơ bản, Django đang cho chúng tôi biết rằng máy chủ cục bộ đang chạy trên máy chủ cục bộ của chúng tôi (127.0.0.1 luôn trỏ đến nó), trên cổng mặc định 8000.

Đừng lo lắng về thông báo lỗi. Trước tiên, hãy kiểm tra xem mọi thứ có hoạt động bình thường trên máy chủ cục bộ của chúng tôi không. Để thực hiện việc này, hãy truy cập trình duyệt web của bạn và dán hướng dẫn này:

http://localhost:8000/
# Do you note that localhost and 127.0.0.1 are the same?

Nếu mọi thứ hoạt động tốt, bạn sẽ thấy một mẫu Django tuyệt đẹp.

Đó là cài đặt Django của chúng tôi.

Bây giờ hãy chuyển sang tiết lộ dự án Django này. Nếu bạn đang làm việc trong một dự án phức tạp hơn, các phương pháp chia sẻ ứng dụng Django sau đây cũng sẽ hoạt động.

Hiển thị ứng dụng Django với Ngrok

Như tôi đã nói trước đây, Ngrok là một trong những công cụ cho phép chúng tôi đưa máy chủ cục bộ của mình lên Internet. Vì vậy, trước tiên hãy tải xuống Ngrok từ trang web chính thức.

Sau khi cài đặt, hãy chuyển sang các lệnh chúng ta cần.

Mở một trình bao khác, giữ thiết bị đầu cuối nơi máy chủ Django hiện đang chạy và nhập.

$  ngrok help
NAME:
   ngrok - tunnel local ports to public URLs and inspect traffic

More commands ....

Điều này sẽ giúp bạn xem nhanh các lệnh có sẵn do Ngrok cung cấp và cũng đảm bảo rằng quá trình cài đặt diễn ra tốt đẹp.

Để tạo một URL nơi mọi người có thể truy cập máy chủ của chúng tôi, hãy bắt đầu.

    $ ngrok http 8000 
# secure public URL for port 8000 web server

Chúng tôi chạy đối số http để tạo một URL sẽ kết nối với cổng 8000 của máy chủ cục bộ của chúng tôi.

Đây là kết quả bạn có khả năng nhận được.

ngrok by @inconshreveable                                                                      (Ctrl+C to quit)
                                                                                                               
Session Status                online                                                                           
Session Expires               1 hour, 59 minutes                                                               
Update                        update available (version 2.3.39, Ctrl-U to update)                              
Version                       2.3.35                                                                           
Region                        United States (us)                                                               
Web Interface                 http://127.0.0.1:4040                                                            
Forwarding                    http://cac2165aa7f8.ngrok.io -> http://localhost:8000                            
Forwarding                    https://cac2165aa7f8.ngrok.io -> http://localhost:8000                           
                                                                                                               
Connections                   ttl     opn     rt1     rt5     p50     p90                                      
                              0       0       0.00    0.00    0.00    0.00       

Như đã nói, Ngrok chuyển tiếp URL kỳ lạ và xấu xí này tới máy chủ cục bộ của chúng tôi. Nhưng điều kỳ diệu sẽ xảy ra khi bạn truy cập trình duyệt bằng URL mà Ngrok đã cung cấp cho bạn.

Thay đổi cài đặt.py

Chà, chuyện gì vừa xảy ra vậy 😱?

Có vẻ như Django đang gặp lỗi do cài đặt DisallowedHost. Nếu bạn kiểm tra trình bao mà bạn chạy máy chủ Django và máy chủ có phiên Ngrok, bạn sẽ nhận được một số thông báo gỡ lỗi.

# Django messages
Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS.
Bad Request: /
[01/May/2021 05:07:46] "GET / HTTP/1.1" 400 65196
Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS.

# Ngrok messages
HTTP Requests                                                            
-------------                                                            
                                                                         
GET /favicon.ico               400 Bad Request                           
GET /                          400 Bad Request                           
                                              

Như Django cho chúng tôi biết, chúng tôi cần thêm miền mà chúng tôi đang kết nối với biến cấu hình ALLOWED_HOSTS. Nhưng chúng tôi có một vấn đề và đó là tên miền quá lớn và khó hiểu.

Vì vậy, hãy tinh chỉnh cài đặt của Django một chút để giải quyết lỗi này. Mở tệp settings.py nằm trong thư mục dự án.

# mytestingproject/settings.py

# Line 28

# Change from
ALLOWED_HOSTS = []

# To

ALLOWED_HOSTS = ["*"]

Nếu bạn biết bất kỳ biểu thức chính quy nào, bạn có thể đánh giá cao việc chúng tôi đặt ký tự đại diện nơi tất cả các máy chủ sẽ được phép.

Bây giờ hãy tải lại trang web và xem kết quả.

Mọi thứ hoạt động hoàn hảo ngay bây giờ! Và nếu bạn bắt đầu tạo ứng dụng cho dự án và đặt URL cũng như chế độ xem, mọi thứ sẽ được phản ánh trong URL công khai này.

Lưu ý: đừng quên thay đổi ALLOWED_HOSTS trong sản xuất vì điều này sẽ tạo ra lỗ hổng bảo mật lớn.

kết luận

Trong hướng dẫn này, bạn đã học cách tạo URL demo cho dự án Django của mình mà không cần phải triển khai nó.

Bạn đã thực hành cách bắt đầu một dự án Django và làm việc với tệp settings.py trong Django.

Cuối cùng, bạn đã học cách sử dụng Ngrok và cách lưu trữ bất kỳ máy chủ cục bộ nào với nó.

Sau đó, khám phá một số khung Python phổ biến để xây dựng API.