Mẫu đăng ký bình python

Trong hướng dẫn này, chúng ta sẽ nói về việc tạo biểu mẫu đăng ký của mình. Mặc dù không bắt buộc, Flask có một mô-đun biểu mẫu tích hợp có tên là WTForms. Để có được điều này, hãy chạy

def add_one[number]:
    return number + 1
5

Bây giờ, vì chúng tôi đang sử dụng mô-đun này để tạo biểu mẫu, điều cuối cùng chúng tôi sẽ làm là tạo một lớp biểu mẫu, lớp này sẽ cung cấp cho chúng tôi một đối tượng biểu mẫu đăng ký, sau đó chúng tôi sẽ chuyển vào mẫu của mình. Nghe có vẻ khó hiểu, nhưng nó không quá tệ

Trong __init__ của chúng tôi. py, chúng tôi sẽ thêm lớp sau. Tôi đề xuất rằng đối với tổ chức, cũng như chức năng, bạn nên đặt tất cả các lớp của mình ở đầu tập lệnh nếu chúng được sử dụng ở nhiều nơi hoặc bạn có thể đặt chúng ngay trên chức năng mà chúng sẽ được sử dụng trong

class RegistrationForm[Form]:
    username = TextField['Username', [validators.Length[min=4, max=20]]]
    email = TextField['Email Address', [validators.Length[min=6, max=50]]]
    password = PasswordField['New Password', [
        validators.Required[],
        validators.EqualTo['confirm', message='Passwords must match']
    ]]
    confirm = PasswordField['Repeat Password']
    accept_tos = BooleanField['I accept the Terms of Service and Privacy Notice [updated Jan 22, 2015]', [validators.Required[]]]
    

		

Lớp biểu mẫu, chứa các trường tên người dùng, email, mật khẩu và xác nhận mật khẩu. Sau đó, chúng tôi có một hộp kiểm cho yêu cầu "chấp nhận điều khoản"

Hãy lưu ý về các tham số "trình xác thực" tại đây, nơi chúng tôi có thể chỉ định tất cả các loại nhưng chúng tôi yêu cầu các quy tắc về độ dài khác nhau, cũng như yêu cầu cả hai mật khẩu khớp với nhau

Cũng lưu ý trường "boolean", nghĩa là nó có thể bật hoặc tắt hoặc 1 hoặc 0. Lưu ý rằng bạn cũng cần phải có trình xác thực ở đây nếu bạn muốn hộp này là hộp kiểm bắt buộc. Nếu bạn đang chạy một ứng dụng nhà hàng ở đây và mọi người chỉ chọn nguyên liệu của họ để làm bánh sandwich, thì bạn sẽ không yêu cầu kiểm tra tất cả các nguyên liệu. Ở đây, chúng tôi muốn chắc chắn rằng người dùng đã đồng ý với các điều khoản của chúng tôi

Hướng dẫn này hướng dẫn bạn cách đóng gói một dự án Python đơn giản. Nó sẽ chỉ cho bạn cách thêm các tệp và cấu trúc cần thiết để tạo gói, cách xây dựng gói và cách tải gói đó lên Chỉ mục gói Python [PyPI]

Mẹo

Nếu bạn gặp sự cố khi chạy các lệnh trong hướng dẫn này, vui lòng sao chép lệnh và đầu ra của nó, sau đó mở một vấn đề trên kho lưu trữ các vấn đề về đóng gói trên GitHub. Chúng tôi sẽ cố gắng hết sức để giúp bạn

Một số lệnh yêu cầu phiên bản mới hơn của pip , vì vậy hãy bắt đầu bằng cách đảm bảo rằng bạn đã cài đặt phiên bản mới nhất.

Unix/macOS

python3 -m pip install --upgrade pip

các cửa sổ

py -m pip install --upgrade pip

Một dự án đơn giản¶

Hướng dẫn này sử dụng một dự án đơn giản tên là

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
8. Nếu tên người dùng của bạn là
packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
9, thì gói hàng sẽ là
def add_one[number]:
    return number + 1
0; . Chúng tôi khuyên bạn nên làm theo hướng dẫn này khi đang sử dụng dự án này, trước khi đóng gói dự án của riêng bạn

Tạo cấu trúc tệp sau tại địa phương

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py

Thư mục chứa các tệp Python phải khớp với tên dự án. Điều này giúp đơn giản hóa cấu hình và rõ ràng hơn đối với người dùng cài đặt gói

Cần có

def add_one[number]:
    return number + 1
1 để nhập thư mục dưới dạng gói và phải trống

def add_one[number]:
    return number + 1
2 là một ví dụ về mô-đun trong gói có thể chứa logic [hàm, lớp, hằng số, v.v. ] gói hàng của bạn. Mở tệp đó và nhập nội dung sau

def add_one[number]:
    return number + 1

Nếu bạn chưa quen với mô-đuncác gói nhập, take a few minutes to read over the Python documentation for packages and modules.

Khi bạn tạo cấu trúc này, bạn sẽ muốn chạy tất cả các lệnh trong hướng dẫn này trong thư mục

def add_one[number]:
    return number + 1
3

Tạo các tập tin gói¶

Bây giờ bạn sẽ thêm các tệp được sử dụng để chuẩn bị phân phối dự án. Khi bạn hoàn thành, cấu trúc dự án sẽ như thế này

python3 -m pip install --upgrade pip
1

Tạo một thư mục thử nghiệm¶

def add_one[number]:
    return number + 1
4 là trình giữ chỗ cho các tệp thử nghiệm. Để trống bây giờ

Tạo pyproject. toml¶

def add_one[number]:
    return number + 1
5 cho biết các công cụ xây dựng “giao diện người dùng” như pipbuild what “backend” tool to use to create distribution packages for your project. You can choose from a number of backends; this tutorial uses Hatchling by default, but it will work identically with setuptools, Flit, PDM, and others that support the
def add_one[number]:
    return number + 1
6 table for metadata.

Ghi chú

Một số phụ trợ xây dựng là một phần của các công cụ lớn hơn cung cấp giao diện dòng lệnh với các tính năng bổ sung như khởi tạo dự án và quản lý phiên bản, cũng như xây dựng, tải lên và cài đặt các gói. Hướng dẫn này sử dụng các công cụ đơn mục đích hoạt động độc lập

Mở

def add_one[number]:
    return number + 1
5 và nhập một trong các bảng
def add_one[number]:
    return number + 1
8 này

nở

python3 -m pip install --upgrade pip
7

công cụ thiết lập

python3 -m pip install --upgrade pip
8

bay

python3 -m pip install --upgrade pip
9

PDM

py -m pip install --upgrade pip
0

Định cấu hình siêu dữ liệu¶

Mở

def add_one[number]:
    return number + 1
5 và nhập nội dung sau. Thay đổi
python3 -m pip install --upgrade pip
12 để bao gồm tên người dùng của bạn;

py -m pip install --upgrade pip
5

  • python3 -m pip install --upgrade pip
    
    12 là tên phân phối của gói của bạn. Đây có thể là bất kỳ tên nào miễn là nó chỉ chứa các chữ cái, số,
    python3 -m pip install --upgrade pip
    
    14,
    python3 -m pip install --upgrade pip
    
    15 và
    python3 -m pip install --upgrade pip
    
    16. Nó cũng chưa được sử dụng trên PyPI. Đảm bảo cập nhật tên người dùng này cho hướng dẫn này, vì điều này đảm bảo bạn sẽ không cố tải lên gói có cùng tên với gói đã tồn tại

  • python3 -m pip install --upgrade pip
    
    17 là phiên bản trọn gói. Xem thông số kỹ thuật của trình xác định phiên bản để biết thêm chi tiết về các phiên bản. Một số phụ trợ xây dựng cho phép nó được chỉ định theo cách khác, chẳng hạn như từ tệp hoặc thẻ git.

  • python3 -m pip install --upgrade pip
    
    18 được sử dụng để xác định tác giả của gói; . Bạn cũng có thể liệt kê
    python3 -m pip install --upgrade pip
    
    19 ở định dạng tương tự

  • python3 -m pip install --upgrade pip
    
    70 là một bản tóm tắt ngắn, một câu về gói

  • python3 -m pip install --upgrade pip
    
    71 là đường dẫn đến tệp chứa mô tả chi tiết về gói. Điều này được hiển thị trên trang chi tiết gói trên PyPI. Trong trường hợp này, mô tả được tải từ
    python3 -m pip install --upgrade pip
    
    72 [là một mẫu phổ biến]. Ngoài ra còn có một biểu mẫu bảng nâng cao hơn được mô tả trong đặc tả siêu dữ liệu dự án .

  • python3 -m pip install --upgrade pip
    
    73 cung cấp các phiên bản Python được dự án của bạn hỗ trợ. Trình cài đặt như pip sẽ xem lại các phiên bản gói cũ hơn cho đến khi tìm thấy gói có phiên bản Python phù hợp.

  • python3 -m pip install --upgrade pip
    
    74 cung cấp chỉ mục và pip một số siêu dữ liệu bổ sung về gói của bạn. Trong trường hợp này, gói chỉ tương thích với Python 3, được cấp phép theo giấy phép MIT và không phụ thuộc vào hệ điều hành. Bạn phải luôn bao gồm ít nhất [các] phiên bản Python mà gói của bạn hoạt động, gói của bạn có sẵn giấy phép nào và gói của bạn sẽ hoạt động trên hệ điều hành nào. Để biết danh sách đầy đủ các bộ phân loại, hãy xem https. //pypi. tổ chức/phân loại/.

  • python3 -m pip install --upgrade pip
    
    75 cho phép bạn liệt kê bất kỳ số lượng liên kết bổ sung nào để hiển thị trên PyPI. Nói chung, điều này có thể là nguồn, tài liệu, trình theo dõi vấn đề, v.v.

Xem đặc tả siêu dữ liệu dự án để biết chi tiết về những trường này và các trường khác có thể được xác định trong bảng

def add_one[number]:
    return number + 1
6. Các trường phổ biến khác là
python3 -m pip install --upgrade pip
77 để cải thiện khả năng khám phá và
python3 -m pip install --upgrade pip
78 được yêu cầu để cài đặt gói của bạn.

Tạo README. md¶

Mở

python3 -m pip install --upgrade pip
72 và nhập nội dung sau. Bạn có thể tùy chỉnh điều này nếu bạn muốn

py -m pip install --upgrade pip
0

Tạo GIẤY PHÉP¶

Điều quan trọng đối với mọi gói được tải lên Chỉ mục gói Python phải bao gồm giấy phép. Điều này cho người dùng cài đặt gói của bạn biết các điều khoản mà theo đó họ có thể sử dụng gói của bạn. Để được trợ giúp chọn giấy phép, hãy xem https. //chọn giấy phép. com/. Khi bạn đã chọn một giấy phép, hãy mở

python3 -m pip install --upgrade pip
80 và nhập văn bản giấy phép. Ví dụ: nếu bạn đã chọn giấy phép MIT

py -m pip install --upgrade pip
1

Hầu hết các phụ trợ xây dựng tự động bao gồm các tệp giấy phép trong các gói. Xem tài liệu phụ trợ của bạn để biết thêm chi tiết

Bao gồm các tệp khác¶

Các tệp được liệt kê ở trên sẽ tự động được bao gồm trong bản phân phối nguồn của bạn. Nếu bạn muốn bao gồm các tệp bổ sung, hãy xem tài liệu dành cho chương trình phụ trợ xây dựng của bạn.

Tạo kho lưu trữ phân phối¶

Bước tiếp theo là tạo gói phân phối cho gói. Đây là những kho lưu trữ được tải lên Chỉ mục gói Python và có thể được cài đặt bởi pip .

Đảm bảo bạn đã cài đặt phiên bản mới nhất của bản dựng của PyPA.

Unix/macOS

py -m pip install --upgrade pip
2

các cửa sổ

py -m pip install --upgrade pip
3

Mẹo

Nếu bạn gặp sự cố khi cài đặt các gói này, hãy xem hướng dẫn Cài đặt gói .

Bây giờ hãy chạy lệnh này từ cùng thư mục chứa

def add_one[number]:
    return number + 1
5

Unix/macOS

py -m pip install --upgrade pip
4

các cửa sổ

py -m pip install --upgrade pip
5

Lệnh này sẽ xuất ra rất nhiều văn bản và sau khi hoàn thành sẽ tạo hai tệp trong thư mục

python3 -m pip install --upgrade pip
82

py -m pip install --upgrade pip
6

Tệp

python3 -m pip install --upgrade pip
83 là phân phối nguồn trong khi tệp
python3 -m pip install --upgrade pip
84 là phân phối được xây dựng. Newer pip mới hơn ưu tiên cài đặt các bản phân phối dựng sẵn, nhưng sẽ quay trở lại các bản phân phối nguồn nếu cần. Bạn phải luôn tải lên bản phân phối nguồn và cung cấp bản phân phối được xây dựng cho các nền tảng mà dự án của bạn tương thích với. Trong trường hợp này, gói ví dụ của chúng tôi tương thích với Python trên mọi nền tảng nên chỉ cần một bản phân phối được xây dựng.

Tải lên kho lưu trữ phân phối¶

Cuối cùng, đã đến lúc tải gói của bạn lên Chỉ mục gói Python

Điều đầu tiên bạn cần làm là đăng ký một tài khoản trên TestPyPI, đây là một phiên bản riêng biệt của chỉ mục gói dành cho kiểm tra và thử nghiệm. Thật tuyệt vời cho những thứ như hướng dẫn này mà chúng tôi không nhất thiết muốn tải lên chỉ mục thực. Để đăng ký tài khoản, hãy truy cập https. //kiểm tra. pypi. org/account/register/ và hoàn thành các bước trên trang đó. Bạn cũng sẽ cần xác minh địa chỉ email của mình trước khi có thể tải lên bất kỳ gói nào. Để biết thêm chi tiết, hãy xem Sử dụng TestPyPI .

Để tải lên dự án của bạn một cách an toàn, bạn sẽ cần mã thông báo API PyPI. Tạo một cái tại https. //kiểm tra. pypi. org/manage/account/#api-tokens, đặt “Phạm vi” thành “Toàn bộ tài khoản”. Không đóng trang cho đến khi bạn đã sao chép và lưu mã thông báo — bạn sẽ không thấy mã thông báo đó nữa

Bây giờ bạn đã đăng ký, bạn có thể sử dụng twine để tải các gói phân phối lên. Bạn sẽ cần cài đặt Twine.

Unix/macOS

py -m pip install --upgrade pip
7

các cửa sổ

py -m pip install --upgrade pip
8

Sau khi cài đặt, hãy chạy Twine để tải lên tất cả các tệp lưu trữ trong

python3 -m pip install --upgrade pip
82

Unix/macOS

py -m pip install --upgrade pip
9

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
0

Bạn sẽ được nhắc nhập tên người dùng và mật khẩu. Đối với tên người dùng, hãy sử dụng

python3 -m pip install --upgrade pip
86. Đối với mật khẩu, hãy sử dụng giá trị mã thông báo, bao gồm tiền tố
python3 -m pip install --upgrade pip
87

Sau khi lệnh hoàn thành, bạn sẽ thấy đầu ra tương tự như thế này

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
1

Sau khi tải lên, gói của bạn sẽ có thể xem được trên TestPyPI; .

python3 -m pip install --upgrade pip
88

Cài đặt gói mới tải lên của bạn¶

Bạn có thể sử dụng pip để cài đặt gói của mình và xác minh rằng gói đó hoạt động. Tạo môi trường ảo và cài đặt gói của bạn từ TestPyPI.

Unix/macOS

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
2

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
3

Đảm bảo chỉ định tên người dùng của bạn trong tên gói

pip nên cài đặt gói từ TestPyPI và đầu ra sẽ trông giống như thế này

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
4

Ghi chú

Ví dụ này sử dụng cờ

python3 -m pip install --upgrade pip
89 để chỉ định TestPyPI thay vì PyPI trực tiếp. Ngoài ra, nó chỉ định
python3 -m pip install --upgrade pip
90. Vì TestPyPI không có các gói giống như PyPI trực tiếp, nên có thể cố gắng cài đặt các phần phụ thuộc có thể không thành công hoặc cài đặt thứ gì đó không mong muốn. Mặc dù gói ví dụ của chúng tôi không có bất kỳ phần phụ thuộc nào, nhưng bạn nên tránh cài đặt các phần phụ thuộc khi sử dụng TestPyPI

Bạn có thể kiểm tra xem nó đã được cài đặt đúng chưa bằng cách nhập gói. Đảm bảo rằng bạn vẫn đang ở trong môi trường ảo của mình, sau đó chạy Python

Unix/macOS

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
5

các cửa sổ

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
6

và nhập gói

packaging_tutorial/
└── src/
    └── example_package_YOUR_USERNAME_HERE/
        ├── __init__.py
        └── example.py
7

Bước tiếp theo¶

Xin chúc mừng, bạn đã đóng gói và phân phối một dự án Python. ✨ 🍰 ✨

Hãy nhớ rằng hướng dẫn này chỉ cho bạn cách tải gói của bạn lên Test PyPI, đây không phải là bộ lưu trữ vĩnh viễn. Hệ thống Kiểm tra thỉnh thoảng xóa các gói và tài khoản. Tốt nhất là sử dụng TestPyPI để kiểm tra và thử nghiệm như hướng dẫn này

Khi bạn đã sẵn sàng tải một gói thực lên Chỉ mục gói Python, bạn có thể làm nhiều việc tương tự như bạn đã làm trong hướng dẫn này, nhưng với những điểm khác biệt quan trọng sau

  • Chọn một tên đáng nhớ và độc đáo cho gói của bạn. Bạn không phải thêm tên người dùng của mình như đã làm trong hướng dẫn, nhưng bạn không thể sử dụng tên hiện có

  • Đăng ký tài khoản trên https. //pypi. org - lưu ý rằng đây là hai máy chủ riêng biệt và thông tin đăng nhập từ máy chủ thử nghiệm không được chia sẻ với máy chủ chính

  • Sử dụng

    python3 -m pip install --upgrade pip
    
    91 để tải gói của bạn lên và nhập thông tin đăng nhập cho tài khoản bạn đã đăng ký trên PyPI thực. Bây giờ bạn đang tải lên gói trong quá trình sản xuất, bạn không cần chỉ định
    python3 -m pip install --upgrade pip
    
    92; . //pypi. org/ theo mặc định

  • Cài đặt gói của bạn từ PyPI thực bằng cách sử dụng

    python3 -m pip install --upgrade pip
    
    93

Tại thời điểm này, nếu bạn muốn đọc thêm về cách đóng gói các thư viện Python thì đây là một số điều bạn có thể làm

Chủ Đề