Khung Django REST không yêu cầu nguồn mô hình hoặc bộ truy vấn mặc dù nó hoạt động tốt nhất khi làm việc với một trong hai bộ lọc này. It does provide a basic Serializer
vì lý do này, as well as basic APIView
classes để cho phép thương lượng nội dung được sử dụng trên các chế độ xem dựa trên lớp chuẩn của Django.
Bạn rất có thể sẽ không cần phải sử dụng Serializer
trừ khi bạn đang tìm kiếm để tuần tự hóa đối tượng kết quả. Cách sử dụng phổ biến khác cho số Serializer
là xác thực dữ liệu đến và chuyển đổi dữ liệu đó thành định dạng mong muốn.
Nếu bạn chỉ muốn trả về giá trị cơ bản (bạn không chỉ định "kết quả của phép nhân ma trận" có thể là gì), thì thậm chí chỉ cần sử dụng chế độ xem cơ bản là thực hiện tất cả các bước . Đối tượng Response
mà khung công tác Django REST cung cấp cho phép bạn trả về dữ liệu tùy ý và được chuyển đổi thành một biểu diễn JSON hoặc XML có thể so sánh được một cách tự động. Bạn không bao giờ cần phải gọi json.dumps
hoặc ép buộc dữ liệu vào một đại diện cụ thể, đối tượng Response
thực hiện tất cả cho bạn.
from rest_framework.response import Response
from rest_framework import serializers, views
class IncredibleInputSerializer(serializers.Serializer):
model_input = serializers.CharField()
class IncredibleView(views.APIView):
def get(self, request):
# Validate the incoming input (provided through query parameters)
serializer = IncredibleInputSerializer(data=request.query_params)
serializer.is_valid(raise_exception=True)
# Get the model input
data = serializer.validated_data
model_input = data["model_input"]
# Perform the complex calculations
complex_result = model_input + "xyz"
# Return it in your custom format
return Response({
"complex_result": complex_result,
})
Trong ví dụ trên, chúng ta tạo ra một IncredibleInputSerializer
đó xác nhận các thông số model_input
truy vấn để đảm bảo rằng nó được bao gồm trong yêu cầu. Đây là một ví dụ rất cơ bản, như khung Django REST hỗ trợ thực hiện thêm nhiều thứ vào đầu vào, như chuyển đổi nó thành một số or validating mà nó phù hợp với một định dạng cụ thể.
Tất nhiên, nếu bạn cần tuần tự hóa một đối tượng hoặc danh sách các đối tượng, đó là nơi khung Django REST vượt trội. Nó không phải là một đối tượng mô hình, nó có thể là một đối tượng với thuộc tính hoặc phương thức để lấy dữ liệu, hoặc thậm chí chỉ là một từ điển cơ bản, và khung công tác Django REST sẽ có thể tuần tự hóa nó cho bạn.
Nguồn
2015-01-06 23:20:43
Kiểm tra: [Sử dụng Tastypie với nguồn dữ liệu không ORM] (http://django-tastypie.readthedocs.org/en/latest/non_orm_data_sources.html) –
khuyên bạn nên sử dụng DRF trên TP http: //www.django -rest-framework.org/api-guide/views/ – Anentropic