Django urls.py in a Javascript-heavy site
Transcript of Django urls.py in a Javascript-heavy site
![Page 1: Django urls.py in a Javascript-heavy site](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/1.jpg)
Django urls.py in a Javascript-heavy site
Sebastien Mirolo@seabasscapoeira
![Page 2: Django urls.py in a Javascript-heavy site](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/2.jpg)
REST-driven Django site
How do I “reverse” my API end points?
![Page 3: Django urls.py in a Javascript-heavy site](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/3.jpg)
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](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/4.jpg)
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](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/5.jpg)
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](https://reader037.fdocuments.in/reader037/viewer/2022092617/58f388331a28abcd608b4615/html5/thumbnails/6.jpg)
Real life examplesfrom
github.com/djaodjin/djaodjin-saasThank You
Sebastien Mirolo@seabasscapoeira