djangbone

Software screenshot:
djangbone
Software ətraflı:
Version: 0.0.2
Tarixi Upload: 14 Apr 15
Geliştirici: Aaron Franks
Lisenziya: Pulsuz
Məşhurluq: 18

Rating: 3.5/5 (Total Votes: 2)

. Daha konkret desək, siz tez default Backbone.sync həyata keçirilməsi ilə çalışan bir backend yaratmaq üçün imkan verir

djangbone asan Backbone.js Önuçlar & nbsp ilə işləmək üçün edir ki, kiçik Django app edir.
Djangbone siz asanlıqla özelleştirmek üçün qarmaqlar verir ki, bir mücərrəd sinif-based görünüşü (BackboneAPIView) təmin edir.
Misal istifadə
/ Yükledikten djangbone nazil edildikdən sonra, siz nə etmək lazımdır bütün edir:
1. yarımsinif BackboneAPIView və base_queryset qurmaq və atributları serialize_fields.
2. Wire Sizin urlconf bax yarımsinif.
MyApp / views.py In:
myapp.models idxal Widget olan
djangbone.views idxal BackboneAPIView dən
class widgetview (BackboneAPIView):
& Nbsp; # base_queryset bütün obyektlərin olan bir queryset deyil
& Nbsp; # APİ əlçatan:
& Nbsp; base_queryset = Widget.objects.all ()
& Nbsp; # serialize_fields göndərdik etmək istəyirəm model sahələri siyahısı
& Nbsp; sizin JSON resonses saylı:
& Nbsp; serialize_fields = (id ',' adı ',' şərhi "," created_at)
MyApp / urls.py In:
myapp.views idxal widgetview dən
# Həm də "kolleksiyaları" və bir maddələr url nümunələri yaradın:
urlpatterns = nümunələri ('',
& Nbsp; url (r '^ widgets, WidgetView.as_view ())
& Nbsp; url (r? ^ Widgets / (P d +), WidgetView.as_view ())
)
Siz djangbone test run etmək istəyirsinizsə, siz INSTALLED_APPS üçün "djangobone" əlavə və python manage.py test djangbone run lazımdır. app həmçinin iş testlər üçün INSTALLED_APPS olmaq lazımdır, belə ki, testlər, django.contrib.auth istifadə edin.
Handling POST və PUT sorğu
Backbone.sync yeni obyektlərin yaradılan zaman POST sorğu istifadə edir və obyektlərin dəyişib zaman sorğu qoymaq. Bu HTTP üsulları dəstək istəyirsinizsə, hər bir sorğu növü üçün qiymətləndirmə istifadə etmək formada dərsləri müəyyən etmək lazımdır.
Bunu etmək üçün, BackboneAPIView add_form_class (POST) və edit_form_class (qoymaq) olmalıdır vermək atributları. Adətən üçün bir ModelForm istifadə etmək lazımdır, lakin asılı olmayaraq, hər bir forma qazanc () metodu yaradılmış və ya redaktə edilib model instansiya qaytarmalıdır.
Burada bir misal var (AddWidgetForm və EditWidgetForm həm ModelForms güman):
djangbone.views idxal BackboneAPIView dən
myapp.models idxal Widget olan
myapp.forms idxal AddWidgetForm, EditWidgetForm
class widgetview (BackboneAPIView):
& Nbsp; base_queryset = ...
& Nbsp; serialize_fields = ...
& Nbsp; add_form_class = AddWidgetForm # POST sorğu üçün istifadə
& Nbsp; edit_form_class = EditWidgetForm # PUT sorğu üçün istifadə
Sizin forma dərsləri tələb obyekt əldə etmək lazımdır aşağıdakı kimi forma dərsləri bir set_request () metodu əlavə, (bəlkə model request.user saxlamaq, və ya əlavə qiymətləndirmə):
sinif AddWidgetForm (ModelForm):
& Nbsp; class Meta:
& Nbsp; model = Widget
& Nbsp; def set_request (self, sorğu):
& Nbsp; self.request = tələbi
& Nbsp; # İndi) ((təmiz self.request) və saxlamaq üçün imkanı var
Pagination
Bir toplanması üçün geri maddələrin sayını məhdudlaşdırmaq istəyirsinizsə, BackboneAPIView nin page_size atributu ilə əsas Pagination yandırmaq olar. Tam üçün seçin və id paginated olacaq olmadan olur. default GET parametr "p", ancaq BackboneAPIView.page_param_name ilə bu yalnış bilər.
Özelleştirme
Yalnız qeydiyyatdan keçmiş istifadəçilər bu fikri daxil olmaq üçün imkan, misal üçün, əlavə funksionallığı ilə BackboneAPIView yarımsinif kesmek lazımdır layiqli şans var. Siz aşağıdakı kimi bunu BackboneAPIView nin göndərilməsi () metodu üzrə Django nin method_decorator istifadə edə bilərsiniz:
django.contrib.auth.decorators idxal login_required
django.utils.decorators idxal method_decorator dən
class widgetview (BackboneAPIView):
& Nbsp; ...
& Nbsp;method_decorator (login_required)
& Nbsp; def göndərilməsi (özünü, sorğu, * args ** kwargs):
& Nbsp; qaytarılması super (widgetview, özünü) .dispatch (* args ** kwargs)
Siz həmçinin sorğu (və ya əlavə url parametri) asılı olaraq base_queryset dəyişir edə bilərsiniz. Siz həmçinin məsələn, bunu göndərilməsi () yalnış bilər:
class widgetview (BackboneAPIView):
& Nbsp; base_queryset = Widgets.objects.all ()
& Nbsp; def göndərilməsi (özünü, sorğu, * args ** kwargs):
& Nbsp; ['Sil' 'PUT'] ilə request.method əgər:
& Nbsp; self.base_queryset = Widgets.objects.filter (sahibi = request.user)
& Nbsp; qaytarılması super (widgetview, özünü) .dispatch (* args ** kwargs)
CSRF müdafiəsi haqqında Qeyd
Backbone.sync ilə yaxşı iş deyil JSON kimi POST sorğu məlumat göndərir Django daxili CSRF middleware (sonuncu form-kodlanmış POST data gözləyir). Siz CSRF middleware istifadə edirsinizsə Nəticədə, ya lazımdır:
1. CSRF qorunması aradan csrf_exempt decorator ilə BackboneAPIView nin dispetçer metodu kesmek, və ya ...
2. həmişə X-CSRFToken HTTP mövzu göndərmək üçün jQuery nin ajax metodu konfiqurasiya javascript-ci ildə (tövsiyə). Bunu bir yol Django CSRF docs baxın, və ya sizin Django şablon yerdə {% csrf_token%} varsa kimi bir şey istifadə edə bilərsiniz:
& Nbsp; // Setup $ .ajax həmişə X-CSRFToken mövzu göndərmək üçün:
& Nbsp; var csrfToken = $ (input [name = csrfmiddlewaretoken]) val ().
& Nbsp; $ (sənəd) .ajaxSend (function (e, XHR, ayarları) {
& Nbsp; xhr.setRequestHeader (X-CSRFToken, csrfToken);
& Nbsp;});
Fərziyyələr
Djangbone iş etmək üçün modelləri haqqında bir neçə fərziyyələr irəli sürür:
- Sizin model 'id' adlı tam əsas əsas var
Alternatives
Djangbone Backbone ilə işləyir bir şəkildə JSON üçün modelləri serialize üçün asan bir yol üçün nəzərdə tutulmuşdur. Bu ümumiləşdirilmiş, format-Aqnostik API generator olmağa çalışır deyil. Ki, aradığınız nə varsa, yəqin ki, yerinə Django-tastypie və ya Django-piston kimi bir şey ilə getmək istəyirəm.
Əgər siz artıq Django-tastypie istifadə etdiyiniz, və ya Djangbone təmin daha tam özellikli API backend axtarır varsa, siz gözəl çalışan bir şəkildə (javascript vasitəsilə) Backbone.sync yalnış düçar edər backbone-tastypie, baxmaq istəyirəm bilər . tastypie ilə

tələblər

  • Python
  • Django

Geliştirici digər proqram Aaron Franks

Turrentine
Turrentine

15 Apr 15

Şərh djangbone

Şərhlər tapılmadı
Şərh əlavə
Images yandırın!