django urls.py in a javascript-heavy site

6
Django urls.py in a Javascript- heavy site Sebastien Mirolo @seabasscapoeira [email protected]

Upload: smirolo

Post on 16-Apr-2017

454 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Django urls.py in a Javascript-heavy site

Django urls.py in a Javascript-heavy site

Sebastien Mirolo@seabasscapoeira

[email protected]

Page 2: Django urls.py in a Javascript-heavy site

REST-driven Django site

How do I “reverse” my API end points?

Page 3: Django urls.py in a Javascript-heavy site

Basic hack: string suffixurls.py

url(r‘^api/billing/(?P<organization>[a-z0-9\-]+)/’, DetailAPIView.as_view(), name=‘api_detail’),url(r‘^api/billing/’, ListAPIView.as_view(), name=‘api_base’),url(r‘^billing/’, TemplateView.as_view( template_name=‘billing.hmtl’), name=‘list’),

billing.html<script type=“text/javascript”> app.constant('urls', { api_base : "{% url ‘api_base' %}”});</script>

app.js$http.get(urls.api_base, params: {q: val});

Page 4: Django urls.py in a Javascript-heavy site

What if I cannot use suffixes?

url(r’^api/(?P<organization>[a-zA-Z0-9\-]+)/’, include(‘urls.api.billing’), decorators=[‘django.contrib.auth.decorators.login_required’]),

I use https://github.com/mila/django-urldecoratorsto add security checks and my urls.py look like:

Page 5: Django urls.py in a Javascript-heavy site

Real hack: string replace

views.pykwargs.update({‘organization’: ‘PAT-organization’});api_pattern = reverse(‘api_detail’, *args, **kwargs);

app.js$http.get(urls.api_detail.replace(‘PAT-organization’, val));

Page 6: Django urls.py in a Javascript-heavy site

Real life examplesfrom

github.com/djaodjin/djaodjin-saasThank You

Sebastien Mirolo@seabasscapoeira

[email protected]