Tôi đang cố gắng sử dụng Piston để cung cấp hỗ trợ REST cho Django. Tôi đã triển khai trình xử lý của mình theo tài liệu được cung cấp. Vấn đề là tôi có thể "đọc" và "xóa" tài nguyên của tôi nhưng tôi không thể "tạo" hoặc "cập nhật". Mỗi lần tôi nhấn api liên quan tôi nhận được một lỗi yêu cầu 400 Bad.Tôi nhận được lỗi Yêu cầu Lỗi 400 trong khi sử dụng django-piston
tôi đã mở rộng các lớp tài nguyên cho CSRF bằng cách sử dụng đoạn mã thường có sẵn này:
class CsrfExemptResource(Resource):
"""A Custom Resource that is csrf exempt"""
def __init__(self, handler, authentication=None):
super(CsrfExemptResource, self).__init__(handler, authentication)
self.csrf_exempt = getattr(self.handler, 'csrf_exempt', True)
My lớp (đoạn mã) trông như thế này:
user_resource = CsrfExemptResource(User)
class User(BaseHandler):
allowed_methods = ('GET', 'POST', 'PUT', 'DELETE')
@require_extended
def create(self, request):
email = request.GET['email']
password = request.GET['password']
phoneNumber = request.GET['phoneNumber']
firstName = request.GET['firstName']
lastName = request.GET['lastName']
self.createNewUser(self, email,password,phoneNumber,firstName,lastName)
return rc.CREATED
Xin vui lòng cho tôi biết làm thế nào có thể tôi có được phương pháp tạo để làm việc bằng cách sử dụng các hoạt động POST?
Ok, tôi đã nhận xét "django.middleware.csrf.CsrfViewMiddleware" từ tệp cài đặt thay vì sử dụng phần mở rộng của Lớp tài nguyên. Tôi vẫn thấy vấn đề này mặc dù – Cheezo
Bạn đang cố gắng thực hiện thao tác HTTP "PUT" hoặc "POST" tương ứng với "tạo" hoặc "cập nhật" như thế nào? Làm cách nào để bạn biết mã phía máy khách này đang tạo yêu cầu HTTP đúng và hợp lệ? –
Đối với POST, tôi sử dụng WizTools.org để từ đó tôi có thể tạo một yêu cầu POST một cách rõ ràng. Ít nhất tôi chắc chắn về yêu cầu đó và điều đó là đủ tôi đoán. – Cheezo