djangbone

Yazılım ekran görüntüsü:
djangbone
Yazılım detaylar:
Versiyon: 0.0.2
Qayıt: 14 Apr 15
Geliştirici: Aaron Franks
Lisans: Ücretsiz
Popülerlik: 18

Rating: 3.5/5 (Total Votes: 2)

. Daha spesifik olarak, hızlı bir şekilde, varsayılan Backbone.sync uygulaması ile çalışan bir arka uç oluşturmanıza olanak verir;

djangbone kolay Backbone.js önyüz & nbsp ile çalışmak için yapar küçük bir Django uygulaması.
Djangbone kolayca özelleştirmek için kanca verir bir soyut sınıf-temelli bir görünüm (BackboneAPIView) sağlar.
Örnek
/ Kurduktan djangbone indirdikten sonra, yapmanız gereken tek şey:
1. Alt Sınıf BackboneAPIView ve base_queryset ayarlamak ve özelliklerini serialize_fields.
2. Tel yukarı urlconf görünümü alt sınıfı.
Myapp / views.py olarak:
myapp.models ithalat Widget gelen
djangbone.views ithalat BackboneAPIView gelen
sınıf WidgetView (BackboneAPIView):
& Nbsp; # base_queryset tüm nesneleri içeren bir QuerySet olduğunu
& Nbsp; # API tarafından erişilebilir:
& Nbsp; base_queryset = Widget.objects.all ()
& Nbsp; # serialize_fields gönderilmesini istediğiniz modeli alanların listesi
& Nbsp; JSON resonses içerisinde:
& Nbsp; serialize_fields = ('id', 'ad', 'açıklaması', 'created_at')
Myapp / urls.py olarak:
myapp.views ithalat WidgetView gelen
# Hem "koleksiyonları" ve tek öğeler için url desenleri oluşturun:
urlpatterns = desenleri ('',
& Nbsp; url (r '^ widget', WidgetView.as_view ()),
& Nbsp; url (r '? ^ Widget / (P d +)', WidgetView.as_view ()),
)
Eğer djangbone testlerini çalıştırmak istiyorsanız, size INSTALLED_APPS için "djangobone" ekleyin ve python manage.py testi djangbone çalıştırmak gerekir. Bu uygulama aynı zamanda işe testler için INSTALLED_APPS olması gerekir, böylece testler, django.contrib.auth kullanın.
Taşıma, POST ve PUT istekleri
Backbone.sync yeni nesneler oluşturulduğunda POST istekleri kullanır ve nesneler değiştirildiğinde istekleri PUT. Bu HTTP yöntemleri desteklemek istiyorsanız, her istek türü için doğrulama için kullanılacak formu sınıfları belirtmeniz gerekir.
Bunu yapmak için, BackboneAPIView add_form_class (POST) ve edit_form_class (PUT) olmalıdır vermek bağlıyor. Genellikle her ikisi için de bir ModelForm kullanmak isteyeceksiniz, ama ne olursa olsun, her formun save () yöntemi oluşturulmuş veya değiştirilmiş olan modeli örneğini dönmelidir.
İşte bir örnek (AddWidgetForm ve EditWidgetForm hem ModelForms varsayalım):
djangbone.views ithalat BackboneAPIView gelen
myapp.models ithalat Widget gelen
myapp.forms ithal AddWidgetForm, EditWidgetForm
sınıf WidgetView (BackboneAPIView):
& Nbsp; base_queryset = ...
& Nbsp; serialize_fields = ...
& Nbsp; add_form_class = AddWidgetForm # POST istekleri için kullanılır
& Nbsp; edit_form_class = EditWidgetForm # PUT istekleri için kullanılır
Eğer form sınıfları istek nesnesine erişim gerekiyorsa aşağıdaki gibi form sınıfları bir set_request () yöntemini ekleyin, (belki modeline request.user kaydetmek için, veya ekstra doğrulama gerçekleştirmek):
sınıf AddWidgetForm (ModelForm):
& Nbsp; sınıf Meta:
& Nbsp; modeli = Widget
& Nbsp; def set_request (kendini, istek):
& Nbsp; self.request = istek
& Nbsp; # Şimdi) ((temiz self.request) ve tasarruf erişimi var
Pagination
Bir koleksiyon için döndürülen öğelerin sayısını sınırlamak istiyorsanız, size BackboneAPIView en PAGE_SIZE niteliği ile temel pagination açabilirsiniz. Bir tamsayı olarak ayarlayın ve bir kimliği paginated olacaktır olmadan GETleri. Varsayılan GET parametresi, "p", ancak BackboneAPIView.page_param_name ile bu kılabilirsiniz.
Özelleştirme
Eğer sadece kayıtlı kullanıcılar bu görüşü erişmek için izin vermek için, örneğin, ek işlevler ile BackboneAPIView alt sınıfı sarmak isteyeceksiniz iyi bir şans var. Bunu aşağıdaki şekilde yapmak için BackboneAPIView en sevk () yöntemi üzerine Django'nın method_decorator kullanabilirsiniz:
django.contrib.auth.decorators ithalat login_required
django.utils.decorators ithalat method_decorator gelen
sınıf WidgetView (BackboneAPIView):
& Nbsp; ...
& Nbsp;method_decorator (login_required)
& Nbsp; def gönderme (kendini, istek, * args, ** kwargs):
& Nbsp; geri dönüş süper (WidgetView, kendini) .dispatch (* args, ** kwargs)
Ayrıca istek (veya ekstra url parametresi) bağlı olarak değişir base_queryset isteyebilirsiniz. Ayrıca, örneğin, bunu yapmak için sevk () geçersiz kılabilirsiniz:
sınıf WidgetView (BackboneAPIView):
& Nbsp; base_queryset = Widgets.objects.all ()
& Nbsp; def gönderme (kendini, istek, * args, ** kwargs):
& Nbsp; ['DELETE' 'PUT'] olarak request.method eğer:
& Nbsp; self.base_queryset = Widgets.objects.filter (sahibi = request.user)
& Nbsp; geri dönüş süper (WidgetView, kendini) .dispatch (* args, ** kwargs)
CSRF Koruma Üzerine Bir Not
Backbone.sync ile çok iyi çalışmaz JSON, gibi POST isteği veri gönderir Django yerleşik CSRF katman (ikinci form kodlanmış POST verilerini bekliyor). Eğer CSRF katman kullanıyorsanız sonucunda, ya isteyeceksiniz:
1. CSRF korumasını devre dışı bırakmak için csrf_exempt dekoratör ile BackboneAPIView en sevk yöntemini sarın, ya da ...
2. Her zaman X-CSRFToken HTTP başlığını göndermek için jQuery en ajax yöntemini yapılandırmak, javascript olarak (önerilir). Bunu yapmak için bir yol Django CSRF dokümanlar bakın, ya da Django şablonunda bir yerde {% csrf_token%} varsa böyle bir şey kullanabilirsiniz:
& Nbsp; // Kurulum $ .ajax her zaman bir X-CSRFToken başlığını göndermek için:
& Nbsp; var csrfToken = $ ('input [name = csrfmiddlewaretoken]') val ().;
& Nbsp; $ (document) .ajaxSend (function (e xhr, ayarlar) {
& Nbsp; xhr.setRequestHeader ('X CSRFToken' csrfToken);
& Nbsp;});
Varsayımlar
Djangbone iş için lütfen modelleri hakkında bir kaç varsayımlar yapar:
- Senin modeli 'id' adlı bir tamsayı birincil anahtarı olan
Alternatifler
Djangbone Omurga ile çalışan bir şekilde JSON için modeller seri hale getirmek için basit bir yol olacak şekilde tasarlanmıştır. Bu genelleştirilmiş, biçim-agnostik API jeneratör olmaya çalışıyorum değil. Bu sizin için ne arıyorsanız, muhtemelen yerine Django-tastypie veya django-piston gibi bir şey ile gitmek isteyeceksiniz.
Zaten Django-tastypie kullanıyorsanız, ya da Djangbone sağlayan daha tam özellikli API arkaplanı için arıyorsanız, size güzel çalışan bir biçimde (javascript aracılığıyla) Backbone.sync geçersiz omurga-tastypie, bakmak isteyebilirsiniz . tastypie ile

Gereksinimler :

  • Python
  • Django

Geliştirici Diğer yazılım Aaron Franks

Turrentine
Turrentine

15 Apr 15

Yorumlar djangbone

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!