SlideShare a Scribd company logo
Gdy Ember spotka DjangoGdy Ember spotka Django
Ember:
A framework for creating ambitious web applications
Django:
The web framework for perfectionists with deadlines
● Tworzenie dynamicznych aplikacji „na jednej stronie”
● Sposób na uporządkowanie kodu JavaScript aplikacji
Co to jest ember.js?Co to jest ember.js?
A jak to wygląda w praktyce?A jak to wygląda w praktyce?
ModeleModele
class Category(models.Model):
name = models.CharField(unique=True, max_length=100)
slug = models.SlugField(unique=True)
def __str__(self):
return self.name
class Post(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique=True)
text = models.TextField()
category = models.ForeignKey(Category)
posted_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title Blog.Category = DS.Model.extend({
name: DS.attr('string'),
slug: DS.attr('string')
});
Blog.Post = DS.Model.extend({
title: DS.attr('string'),
slug: DS.attr('string'),
text: DS.attr('string'),
category: DS.belongsTo('category', {async: true}),
posted_date: DS.attr('date')
});
Routing - URLeRouting - URLe
urlpatterns = patterns(
'blog.views',
url(r'^$', 'home_view', name='posts'),
url(r'^(?P<slug>[w-_]+)/$', 'post_view', name='post'),
)
Blog.Router.map(function() {
this.route('posts');
this.route('post', {path: 'posts/:id'});
});
Generic ViewsGeneric Views
class HomeView(generic.ListView):
def get_queryset(self):
return models.Post.objects.all().order_by('-posted_date')
home_view = HomeView.as_view()
class PostView(generic.DetailView):
model = models.Post
post_view = PostView.as_view()
Blog.PostsRoute = Ember.Route.extend({
model: function() {
return this.get('store').find('post');
}
});
Blog.PostRoute = Ember.Route.extend({
model: function(params) {
return this.get('store').find('post', params.id);
}
});
KontekstKontekst
def get_context_data(self, **kwargs):
context = super().get_context_data()
context['is_python'] = self._get_is_python()
return context
def _get_is_python(self):
return ('python' in self.object.category.name.lower()
or 'python' in self.object.title)
Blog.PostController = Ember.ObjectController.extend({
isPython: function() {
var title = this.get('content.title').toLowerCase();
var category = this.get('content.category.name');
if (category) {
category = category.toLowerCase();
return title.indexOf('python') != -1 || category.indexOf('python') != -1;
}
}.property('content.title', 'content.category.name')
});
SzablonySzablony
{% for post in post_list %}
<h2><a href="{% url 'post' post.slug %}">{{ post.title }}</a></h2>
<blockquote>
{{ post.text|safe }}
<p>{{ post.posted_date|date:"Y.m.d H:i" }}, {{ post.category.name}}</p>
</blockquote>
{% endfor %}
{% verbatim %}
{{#each post in content}}
<h2>{{#link-to "post" post.id}}{{post.title}}{{/link-to}}</h2>
<blockquote>
{{{post.text}}}
<p>{{post.posted_date}}, {{post.category.name}}</p>
</blockquote>
{{/each}}
{% endverbatim %}
Co jeszcze?Co jeszcze?
●
WidokiWidoki – do integracji kodu opartego o
zdarzenia z aplikacją emberową
●
AkcjeAkcje – wysokopoziomowa reprezentacja tych
zdarzeń
●
Różne adapteryRóżne adaptery ember-data
(inne frameworki, języki)
●
Django-javascript-settingsDjango-javascript-settings – przekazywanie
konfiguracji, ścieżek itd.
http://emberjs.com/ember-users/
A gdzie tkwi haczyk?A gdzie tkwi haczyk?
Asynchroniczna aplikacjaAsynchroniczna aplikacja
wykorzystująca bindingiwykorzystująca bindingi
(property) a nie zdarzenia (events)(property) a nie zdarzenia (events)
Gdy Ember spotka Django
Learning curveLearning curve
http://bigemployee.com/9-things-you-should-know-before-starting-your-next-ember-js-and-ember-data-application/
Gdy Ember spotka Django
Sentry + Raven.JSSentry + Raven.JS
Gdy Ember spotka Django
KonkurencjaKonkurencja
KonkurencjaKonkurencja
https://www.airpair.com/js/javascript-framework-comparison
Jak zacząć?Jak zacząć?
●
emberjs.comemberjs.com
●
stackoverflow.comstackoverflow.com
●
github.com/dustinfarris/ember-django-adaptergithub.com/dustinfarris/ember-django-adapter
●
www.youtube.comwww.youtube.com
●
www.python.rk.edu.plwww.python.rk.edu.pl
Pytania?Pytania?

More Related Content

Viewers also liked (15)

PPS
Mes Rosiers
chlud
 
PPT
What Is The Atmosphere
srenshaw
 
PPT
Atoms, Molecules & Stoichometry (III)
Bernard Ng
 
PPT
Setting Your Terms
Jane Lambert
 
PPS
Copiii Lumii
Andrei Catalin Semen
 
PPT
Meet On The Street
NL.M.S.R
 
PDF
Introduction to intellectual property handlout
Jane Lambert
 
PDF
HYPE on presentations
Tom Theys
 
PPT
Søkeskolen
Ellen Skaadel
 
PPTX
Leeds inventors group
Jane Lambert
 
PPT
Introduction to IP: Useful Websites
Jane Lambert
 
PPT
Atomic Structure (IV)
Bernard Ng
 
PPT
401+Powerpoint[1]
adusard
 
PPT
Toolkit Workshop [V2]
srenshaw
 
PDF
Moving Forward: Redesigning UNC's Library Website
chaefele
 
Mes Rosiers
chlud
 
What Is The Atmosphere
srenshaw
 
Atoms, Molecules & Stoichometry (III)
Bernard Ng
 
Setting Your Terms
Jane Lambert
 
Copiii Lumii
Andrei Catalin Semen
 
Meet On The Street
NL.M.S.R
 
Introduction to intellectual property handlout
Jane Lambert
 
HYPE on presentations
Tom Theys
 
Søkeskolen
Ellen Skaadel
 
Leeds inventors group
Jane Lambert
 
Introduction to IP: Useful Websites
Jane Lambert
 
Atomic Structure (IV)
Bernard Ng
 
401+Powerpoint[1]
adusard
 
Toolkit Workshop [V2]
srenshaw
 
Moving Forward: Redesigning UNC's Library Website
chaefele
 

Gdy Ember spotka Django