djangbone

Programinė įranga Screenshot:
djangbone
Programinė detalės:
Versija: 0.0.2
Įkėlimo datą: 14 Apr 15
Kūrėjas: Aaron Franks
Licencija: Nemokamai
Populiarumas: 18

Rating: 3.5/5 (Total Votes: 2)

djangbone yra maža programa, kuri Django leidžia lengvai dirbti su Backbone.js nakładki & nbsp;. Tiksliau, jis leidžia jums greitai sukurti posistemės, kuri dirba su numatytuoju Backbone.sync įgyvendinimą.
Djangbone suteikia vieną abstrakti klasė pagrįstą požiūrį (BackboneAPIView), kuri suteikia jums kabliukai pritaikyti jį lengvai.
Pavyzdys naudojimas
Po atsisiųsti / diegiant djangbone, viskas, ką jums reikia padaryti, tai:
1. Poklasis BackboneAPIView ir nustatykite base_queryset ir serialize_fields atributus.
2. Vielos iki požiūris poklasis savo urlconf.
Be MyApp / views.py:
nuo myapp.models importo Widget
nuo djangbone.views importo BackboneAPIView
klasė WidgetView (BackboneAPIView):
& Nbsp; # base_queryset yra queryset, kuriame visus objektus, kurie yra
& Nbsp; # prieinama API:
& Nbsp; base_queryset = Widget.objects.all ()
& Nbsp; # serialize_fields yra modelio laukų, kuriuos norite išsiųsti sąrašas
& Nbsp; # Jūsų JSON resonses:
& Nbsp; serialize_fields = ("id", "pavadinimas", "aprašymas", "created_at)
Be MyApp / urls.py:
nuo myapp.views importo WidgetView
# Sukurti URL schemas tiek "kolekcijos" ir vienetinius:
urlpatterns = modeliai (",
& nbsp; url (R '^ raštai ", WidgetView.as_view ()),
& Nbsp; url (r "? ^ Raštai / (P d +), WidgetView.as_view ()),
)
Jei norite paleisti djangbone bandymus, jums reikia pridėti "djangobone" į savo INSTALLED_APPS, ir paleisti python manage.py bandymo djangbone. Bandymai naudoti django.contrib.auth, kad programa taip pat turi būti jūsų INSTALLED_APPS už į darbo bandymus.
Naudojimas POST ir įdėti prašymai
Backbone.sync naudojamos POST užklausas, kai nauji objektai yra sukurta, ir įdėti prašymus, kai objektai yra pakeista. Jei norite paremti šiuos HTTP metodus, reikia nurodyti, kokia forma klasės naudoti patvirtinimo kiekvienos užklausos tipą.
Norėdami tai padaryti, suteikti BackboneAPIView turėtų add_form_class (post) ir edit_form_class (įdėti) atributus. Paprastai jūs norite naudoti abiem ModelForm, tačiau nepaisant to, kiekvienam forma Taupykime () metodas turėtų grįžti modelio egzempliorių, kuris buvo sukurtas ar modifikuotas.
Štai pavyzdys (prisiimti AddWidgetForm ir EditWidgetForm abu ModelForms):
nuo djangbone.views importo BackboneAPIView
nuo myapp.models importo Widget
nuo myapp.forms importuoti AddWidgetForm, EditWidgetForm
klasė WidgetView (BackboneAPIView):
& Nbsp; base_queryset = ...
& Nbsp; serialize_fields = ...
& Nbsp; add_form_class = AddWidgetForm # Naudojama POST užklausas
& Nbsp; edit_form_class = EditWidgetForm # Naudojama įdėti prašymus
Jei jums reikia patekti į prašymą objekto formą klasių (gal sutaupyti request.user savo modelio, ar atlikti papildomų patvirtinimo), pridėti set_request () metodą formą klases:
klasė AddWidgetForm (ModelForm):
& Nbsp; klasės meta:
& Nbsp; modelis = widget
& Nbsp; def set_request (savarankiškai, prašymas):
& Nbsp; self.request = prašymas
& Nbsp; # Dabar jūs turite () prieigą prie self.request švarus () ir išsaugoti
numeracija
Jei norite apriboti daiktų grąžinti už surinkimo numeris, galite įjungti pagrindinio numeracija su BackboneAPIView anketa page_size atributas. Nustatykite jį į sveikojo skaičiaus ir gauna be id bus sunumeruoti. Numatytasis parametras yra GET "p", bet jūs galite nepaisyti tai su BackboneAPIView.page_param_name.
Pritaikyti
Yra tikimybė, kad padorus jūs norite wrap savo BackboneAPIView poklasis su papildomu funkcionalumu, pavyzdžiui, tik leisti registruoti vartotojai gali prieiti prie šio požiūrio. Galite naudoti Django anketa method_decorator ant BackboneAPIView anketa išsiuntimo () metodas tai padaryti taip:
nuo django.contrib.auth.decorators importo login_required
nuo django.utils.decorators importo method_decorator
klasė WidgetView (BackboneAPIView):
& Nbsp; ...
& Nbsp;method_decorator (login_required)
& nbsp; def išsiuntimo (savarankiškai, prašymu * ARGS ** kwargs):
& Nbsp; grąža super (WidgetView, savarankiškai) .dispatch (* ARGS ** kwargs)
Taip pat galbūt norėsite keisti base_queryset priklausomai nuo prašymo (arba papildomą url parametras). Jūs taip pat gali nepaisyti išsiuntimo () tai padaryti, pavyzdžiui:
klasė WidgetView (BackboneAPIView):
& Nbsp; base_queryset = Widgets.objects.all ()
& nbsp; def išsiuntimo (savarankiškai, prašymu * ARGS ** kwargs):
& Nbsp; jei request.method į ['ĮDĖK "," DELETE "]:
& Nbsp; self.base_queryset = Widgets.objects.filter (savininkas = request.user)
& Nbsp; grąža super (WidgetView, savarankiškai) .dispatch (* ARGS ** kwargs)
Pastaba dėl CSRF apsaugos "
Backbone.sync siunčia POST užklausos duomenis JSON, kuris neveikia taip gerai su Django įmontuota CSRF tarpinės (pastarasis tikisi forma koduotas POST duomenys "). Kaip rezultatas, jei jūs naudojate CSRF tarpinės, jūs norite būti:
1. wrap savo BackboneAPIView anketa siuntimo būdą su csrf_exempt apdailininko išjungti CSRF apsaugą, arba ...
2. (rekomenduojama) JavaScript, jQuery konfigūruoti savo ajax metodą visada siųsti X CSRFToken HTTP antraštę. Žr Django CSRF docs vieną būdą tai padaryti, arba jei turite {% csrf_token%} kažkur savo Django šabloną galite naudoti kažką panašaus į:
& Nbsp; // Sąranka $ .ajax visada siųsti žinutę X-CSRFToken antraštę:
& Nbsp; var csrfToken = $ ('įvesties [vardas = csrfmiddlewaretoken] ") Val (.);
& nbsp; $ (dokumentas) .ajaxSend (funkcija (e, xhr, nustatymai) {
& Nbsp; xhr.setRequestHeader ("X-CSRFToken" csrfToken);
& Nbsp;});
prielaidos
Djangbone daro keletą prielaidų apie savo modelius, kad į darbą:
- Jūsų modelis turi sveikasis pirminį raktą, pavadintą "id"
Alternatyvos "
Djangbone yra skirta būti paprastas būdas serialize savo modelius JSON taip, kad dirba su Backbone. Tai ne bando būti apibendrintas, formatas agnostikas API generatorius. Jei tai, ką jūs ieškote, jūs tikriausiai norite eiti su kažką panašaus django-tastypie ar django-stūmoklio vietoj.
Jei jau naudojate Django-tastypie, ar ieškote daugiau pilnai API posistemė nei Djangbone suteikia, galbūt norėsite pažvelgti į stuburą-tastypie, kuri atsveria Backbone.sync (per javascript) tokiu būdu, kad dirba gražiai . su tastypie

Reikalavimai :

  • Python
  • Django

Kita programinė įranga kūrėjas Aaron Franks

Turrentine
Turrentine

15 Apr 15

Komentarai djangbone

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!