.보다 구체적으로는, 당신이 빨리 기본 Backbone.sync 구현과 함께 동작하는 백엔드를 구축 할 수 있도록
djangbone 쉽게 Backbone.js 프론트 엔드 & NBSP으로 작업 할 수있는 작은 장고 응용 프로그램입니다.
Djangbone은 쉽게 사용자 정의 할 수 후크주는 하나의 추상 클래스 기반 뷰 (BackboneAPIView)를 제공합니다.
사용 예
/ 설치 djangbone을 다운로드 한 후, 당신이 할 필요가 있습니다 :
1. 서브 클래스 BackboneAPIView, 그리고 base_queryset을 설정하고 속성을 serialize_fields.
2. 와이어까지 당신의 urlconf에서보기 서브 클래스입니다.
MyApp를 / views.py에서 :
myapp.models 수입 위젯에서
djangbone.views 수입 BackboneAPIView에서
클래스 WidgetView (BackboneAPIView) :
& NBSP; # 1 base_queryset는 모든 개체가 포함 된는 QuerySet입니다
& NBSP; # API 액세스 :
& NBSP; base_queryset = Widget.objects.all ()
& NBSP; # serialize_fields은 전송하고자하는 모델 필드의 목록입니다
& NBSP; 당신의 JSON의 resonses에서 # :
& NBSP; serialize_fields = ( 'ID', '이름', '설명', 'created_at')
MyApp를 / urls.py에서 :
myapp.views 수입 WidgetView에서
# 모두 "컬렉션"단일 항목에 대한 URL 패턴을 만듭니다
urlpatterns의 패턴 = ( '',
& NBSP; URL (R '^ 위젯', WidgetView.as_view ()),
& NBSP; URL (R '? ^ 위젯 / (P D +)', WidgetView.as_view ()),
)
당신이 djangbone 테스트를 실행하려는 경우, 당신은 당신의 INSTALLED_APPS에 "djangobone"를 추가하고, 파이썬 manage.py 테스트 djangbone를 실행해야합니다. 이 응용 프로그램은 또한 일에 시험에 대한 귀하의 INSTALLED_APPS에있을 필요가 있도록 테스트는 django.contrib.auth를 사용합니다.
POST와 PUT 요청 처리
Backbone.sync 새로운 객체가 생성 될 때 POST 요청을 사용하고, 객체가 변경 될 때 요청을했습니다. 이러한 HTTP 방식을 지원하려면 각 요청 유형에 대한 검증에 사용할 양식 클래스를 지정해야합니다.
이렇게하려면 BackboneAPIView가 add_form_class (POST) 및 edit_form_class (PUT)을 가져야한다 줄 속성. 보통은 모두 ModelForm를 사용하는 것이 좋습니다,하지만 상관없이, 각 양식의 저장 () 메소드는 생성되거나 수정 된 모델 인스턴스를 반환해야합니다.
다음은 예입니다 (AddWidgetForm 및 EditWidgetForm 모두 ModelForms 있다고 가정) :
djangbone.views 수입 BackboneAPIView에서
myapp.models 수입 위젯에서
myapp.forms에서 가져 AddWidgetForm, EditWidgetForm
클래스 WidgetView (BackboneAPIView) :
& NBSP; base_queryset = ...
& NBSP; serialize_fields = ...
& NBSP; add_form_class = AddWidgetForm #은 POST 요청에 사용
& NBSP; edit_form_class = EditWidgetForm #은 PUT 요청에 사용
당신이 당신의 폼 클래스에 요청 개체에 액세스해야하는 경우 다음과 같이 폼 클래스에 set_request () 메소드를 추가, (아마도 모델에 request.user를 저장하거나 별도의 유효성 검사를 수행) :
클래스 AddWidgetForm (ModelForm) :
& NBSP; 클래스 메타 :
& NBSP; 모델 = 위젯
& NBSP; 데프 set_request (자체 요청)
& NBSP; self.request = 요청
& NBSP; # 이제 당신은 () (청소에 self.request) 및 저장 할 수있는 액세스 권한이
쪽수 매기기
콜렉션에 대해 반환 된 항목의 수를 제한하려는 경우, 당신은 BackboneAPIView의 PAGE_SIZE 속성을 기본 매김을 설정할 수 있습니다. 정수로 설정하고 ID가 페이지 매김을 할 것없이 가져옵니다. 기본 GET 매개 변수는 "P",하지만 당신은 BackboneAPIView.page_param_name 이것을 대체 할 수 있습니다.
사용자 지정
당신이 등록 된 사용자 만이보기에 액세스 할 수 있도록 예를 들어, 추가 기능으로 BackboneAPIView 서브 클래스를 감싼다 괜찮은 기회가있다. 다음과 같이이 작업을 수행 할 BackboneAPIView의 파견 () 메소드에 장고의 method_decorator을 사용할 수 있습니다 :
django.contrib.auth.decorators에서 가져 오기 login_required
django.utils.decorators 수입 method_decorator에서
클래스 WidgetView (BackboneAPIView) :
& NBSP; ...
& NBSP; @method_decorator (login_required)
& NBSP; 데프 파견 (자기, 요청, * 인수, ** kwargs로) :
& NBSP; 반환 슈퍼 (WidgetView, 자기) .dispatch (* 인수, ** kwargs로)
또한 요청 (또는 추가 URL 매개 변수)에 따라 base_queryset을 변경 할 수 있습니다. 또한 예를 들어,이 작업을 수행하는 파견 ()를 재정의 할 수 있습니다 :
클래스 WidgetView (BackboneAPIView) :
& NBSP; base_queryset = Widgets.objects.all ()
& NBSP; 데프 파견 (자기, 요청, * 인수, ** kwargs로) :
& NBSP;, '삭제'를 'PUT']에 request.method 경우 :
& NBSP; self.base_queryset = Widgets.objects.filter (소유자 = request.user)
& NBSP; 반환 슈퍼 (WidgetView, 자기) .dispatch (* 인수, ** kwargs로)
CSRF 보호에 대한주의
Backbone.sync 함께 잘 작동하지 않습니다 JSON으로 POST 요청 데이터를 전송 장고에 내장 된 CSRF 미들웨어 (후자의 형태로 인코딩 된 POST 데이터를 예상). 당신은 CSRF 미들웨어를 사용하는 경우 그 결과, 다음 중 하나에 할 것입니다 :
1. CSRF 보호를 비활성화 할 수 csrf_exempt 데코레이터로 BackboneAPIView의 발송 방법을 감싸고, 또는 ...
2. 항상 X-CSRFToken HTTP 헤더를 보낼 jQuery의 아약스 방법을 구성, 자바 스크립트 (권장). 그것을 할 수있는 하나의 방법을 장고 CSRF의 문서를 참조하거나 당신이 당신의 장고 템플릿에 어딘가에 {% csrf_token %}를 가지고 있다면 당신은 같은 것을 사용할 수 있습니다 :
& NBSP; // 설정 $의 아약스는 항상 X-CSRFToken 헤더를 보낼 수 :
& NBSP; var에 csrfToken = $ ( '입력 [이름 = csrfmiddlewaretoken]') 발 ().;
& NBSP; $ (문서) .ajaxSend (기능 (전자, XHR, 설정) {
& NBSP; xhr.setRequestHeader ( 'X-CSRFToken', csrfToken);
& NBSP;});
가정
Djangbone 일에 순서대로 모델에 대한 몇 가지 가정을하고 있습니다 :
- 모델은 'ID'라는 이름의 정수 기본 키가
대안
Djangbone는 백본와 함께 작동하는 방식으로 JSON에 모델을 직렬화하는 간단한 방법이 될 수 있도록 설계되었습니다. 그것은 일반화, 형식에 구애받지 API 발생 될 우려는 없습니다. 즉 당신이 찾고있는 무엇을하면, 아마도 장고 - tastypie 또는 장고 - 피스톤과 같이 함께 가야 할 것입니다.
이미 장고 - tastypie를 사용하고, 또는 Djangbone가 제공하는 것보다 더 완전한 기능을 갖춘 API 백엔드을 찾고 있다면, 당신은 잘 작동하는 방법 (자바 스크립트를 통해) Backbone.sync을 무시 백본 tastypie,보고 할 수 있습니다 tastypie와
이 요구 사항 : 있습니다.
파이썬
장고
댓글을 찾을 수 없습니다