đàm phán là một, đàm phán nội dung đơn giản thông minh cho các ứng dụng web Python.
Đàm phán nội dung có thể được khó khăn để làm tốt. Lý tưởng nhất, mã của bạn nên khô, và bạn sẽ không được lặp lại soạn cũ trong nhiều phương pháp xem để phát ra các đối tượng cùng một tên miền trong các định dạng khác nhau. đàm phán sẽ giúp làm cho cuộc sống của bạn dễ dàng hơn bằng cách cho phép bạn để trang trí các phương pháp nhìn của bạn với định dạng tự động dịch các đối tượng miền của bạn sang định dạng theo yêu cầu của khách hàng.
Nó thực sự đơn giản để sử dụng. Hy vọng rằng ví dụ này (cho một ứng dụng Flask) làm cho các điểm chính rõ ràng:
# Đầu tiên, chúng tôi viết một vài định dạng mà chỉ định làm thế nào để dịch
# Đầu ra của chức năng xem sang một định dạng cụ thể. Ở đây chúng ta xác định một
# JSON định dạng và định dạng HTML mà phải mất một tham số mẫu.
từ negotiate.flask nhập Formatter
lớp JSONFormatter (Formatter):
& Nbsp; format = 'json'
& Nbsp; mimetypes = ['application / json']
& Nbsp; def render (tự, obj):
& Nbsp; json.dumps return (obj)
lớp HTMLFormatter (Formatter):
& Nbsp; format = 'json'
& Nbsp; mimetypes = ['text / html "]
& Nbsp; def cấu hình (self, mẫu):
& Nbsp; self.template = template
& Nbsp; def render (tự, obj):
& Nbsp; return render (self.template, ** obj)
# Sau đó, khi xây dựng các ứng dụng, chúng tôi trang trí chức năng xem với
# "Thương lượng" trang trí, liệt kê các định dạng mà trong đó quan điểm này là có sẵn.
từ nhập khẩu negotiate.flask đàm phán
@ App.route ('/ posts /
@ App.route ('/ posts /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, template = 'post.html')
def view_post (id, format = None):
& Nbsp; post = Posts.by_id (id)
& Nbsp; nếu bài viết là None:
& Nbsp; hủy bỏ (404)
& Nbsp; nếu không g.user.authorize ('đọc', bài):
& Nbsp; hủy bỏ (401)
& Nbsp; trở lại {'bài': post}
Kết quả là một hành động xem đó sẽ trở lại một phiên bản HTML của bài viết theo mặc định (tức là với Chấp nhận: * / * và không có định dạng rõ ràng), hoặc nếu phần mở rộng .html được quy định một cách rõ ràng, hoặc một phiên bản JSON của bài viết nếu mở rộng .json được đưa ra hoặc chấp nhận: application / json được gửi với yêu cầu.
Hỗ trợ
đàm phán hiện đang hỗ trợ Flask và giá treo, mặc dù thêm hỗ trợ cho các khuôn khổ web khác nên được khá dễ dàng. Có một cái nhìn tại đàm phán / flask.py và đàm phán / pylons.py để xem số tiền nhỏ của mã tích hợp yêu cầu
Yêu cầu .
- Python
Bình luận không