Full Stack Development in Django
Tags: django, python, webdev, beginners
Published: 2020-04-30 10:10:55

# Introduction
When it comes to Django, there is tons of information. Which introduced on what could be done with default capabilities. Which is quite extensive that won't be covered in this article. I think I could list out the various option to break apart Django for each use cases. 

For web developers, who are looking to take advantage part of Django. To fulfil what they need for their use case, by removing or replacing it with another technology specific to their needs.
 
# Front-End
For the front-end besides using [Django's templating engine][1]. Which serves web pages generated from **pre-created** html templates with Django tags and data drawn from the Django ORM. You can use [Jinja2][2] for loading web page faster. 

Regardless of which type of templating engine you use, one can always beautify it with [Bootstrap][3]. Which if you look for **pre-created** templates. There is multiple pretty bootstrap theme from [CreativeTim][4] that you can use. 

For the front-end side, you can totally ignore the template language and use a Javascript Front-end framework like [Vue][5], [React][6], [Angular][7]. Have Django become part of your backend serving endpoints using either [Graphene Django][8] or as a [Django REST Framework][9].

# Back-end
In terms of backend portion for Django, you might need to convert Django to serve endpoints for the front-end web framework. As either GraphQL using [Graphene Django][8] or Restful API using [Django REST Framework][9].  

Sometimes you might require your API services as an **asynchronous** task. Which you adopt it through the use of [Celery][10]. Previously there are a few ways through the use of [Django Channels][11] or [Celery][12]. 

Now with the release of the latest [Django 3.0][13], that comes with **asynchronous** capability that comes built-in by default that allows the deploying using a new webs server like [ASGI][14]. 

# Deployment
In terms of deployments, there are really multiple ways for you to skin the cat by deploying through self-hosting, cloud provider or as a microservice. 

In terms of self-hosting, one could go for using [docker][15] to deploying on a cloud-like [Linode][16] or [Heroku][17]. 

Now you can even use microservice like [Serverless][18] or [Zappa][19] to deploy in [AWS][20]. So there's really tons of way to do it with different advantage based upon the use case.  

# Conclusion
I hope that it will be useful for you to learn more about Django. Which took a lot of time for me watching youtube or trying out stuff on which works. Learning from failure like configuring [mob_wsgi][21] in [Apache][22] or configuring [Gunicorn][23] to make it work on [Nginx][24].

As I gain more knowledge and be willing to learn from multiple points of view to create software.  Which is specific to the use case instead of being dogmatic or narrow-minded in the type of using only one technology to solve a problem.

If you like this article do **sign up** for my [Adventurer's Newsletter](https://maxongzb.activehosted.com/f/1) which contains interesting content I stumble across over the week in the area of **Python**, **Web Development**, **Startup**.

You can also **follow** me to get the **latest** update of my article on **Dev**
The original post was on [Full Stack Development in Django - Reading Time: 3 Mins](https://www.maxongzb.com/full-stack-development-in-django-reading-time-3-mins/) and cover image by [Faisal M on Unsplash](https://unsplash.com/photos/g0RtZc1IBtU)

This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article

# Reference
* [Django Templates][1]
* [Jinja2][2]
* [Bootstrap][3]
* [CreativeTim][4]
* [Vue][5]
* [React][6]
* [Angular][7]
* [Django REST Framework][9]
* [Graphene Django][8]
* [Celery][10]
* [Django Channels][11]
* [Django 3.0][13]
* [ASGI][14]
* [The Best Docker base image for your Python application (April 2020)][15]
* [Linode][16]
* [Heroku][17]
* [AWS][20]
* [Serverless][18]
* [Zappa][19]
* [Mod WSGI][21]
* [Gunicorn][23]
* [Uvicorn][25]
* [Apache Webserver][22]
* [Nginx][24]


[1]: https://docs.djangoproject.com/en/3.0/topics/templates/
[2]: https://jinja.palletsprojects.com/en/2.11.x/
[3]: https://getbootstrap.com/
[4]: https://www.creative-tim.com/bootstrap-themes
[5]: https://vuejs.org/
[6]: https://reactjs.org/
[7]: https://angular.io/
[8]: https://github.com/graphql-python/graphene-django
[9]: https://www.django-rest-framework.org/
[10]: https://realpython.com/asynchronous-tasks-with-django-and-celery/
[11]: https://github.com/django/channels/
[12]: 10
[13]: https://hub.packtpub.com/django-3-0-is-going-async/
[14]: https://docs.djangoproject.com/el/3.0/howto/deployment/asgi/
[15]: https://pythonspeed.com/articles/base-image-python-docker-images/
[16]: https://www.linode.com/?r=86691f9edbad2c726c45ad00c61d130200b90c27
[17]: https://www.heroku.com/
[18]: https://www.serverless.com/
[19]: https://github.com/Miserlou/Zappa
[20]: https://aws.amazon.com/
[21]: https://modwsgi.readthedocs.io/en/develop/
[22]: https://httpd.apache.org/
[23]: https://gunicorn.org/
[24]: https://www.nginx.com/
[25]: https://www.uvicorn.org/