├── README.md └── python-django.png /README.md: -------------------------------------------------------------------------------- 1 | ## Python Django 2 | 3 | --- 4 | 5 | Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source. 6 | 7 | ![PythonDjango](python-django.png) 8 | 9 | ### The road map to become successful Python-Django engineer 10 | 11 | #### I am assuming that you already have following knowladge 12 | 13 | - Basics of Python 14 | - Basics of OOP 15 | - Basics of Git - commit, push, pull, clone, branch, revert 16 | - A bit of Data structures 17 | 18 | #### Before starting learn about followings 19 | 20 | - How internet works generally? 21 | - HTTP protocol 22 | - Request / Response flow 23 | - What is an API / REST API? 24 | - HTTP Verbs 25 | - HTTP Status Codes 26 | - What is JSON and Serialization 27 | - What is Linux and what are the linux distros 28 | - How to install Ubuntu alongside Windows 29 | 30 | ### Basic Concepts 31 | 32 | - What is Database (relational) 33 | 34 | - What is Table 35 | - What is Row 36 | - What is Column 37 | - Primary Key 38 | - Unique Key 39 | - Foreign Key 40 | 41 | - Virtual Environment 42 | 43 | - Install virtualenv 44 | - Activate environment 45 | - Deactivate environment 46 | - Then about why do we need a virtualenv 47 | 48 | - Start a Django Project 49 | 50 | - Install Django 51 | - Install DRF 52 | - Learn about Django structure 53 | - Learn about Settings File 54 | 55 | - Create your First Model 56 | 57 | - Learn about Django ORM existing fields 58 | - Create simple Model 59 | - Migrate it 60 | - Register it to Admin Panel 61 | 62 | - Create your First Serialization 63 | 64 | - Learn about Model Serializer 65 | - Learn about Serializer 66 | 67 | - Create your First API with views 68 | 69 | - Visit DRF - Django Rest Framework website and look through it's getting started tutorial 70 | - Test your API with Postman 71 | 72 | - Learn about code formatting 73 | - AutoPEP8 74 | - Flake8 75 | 76 | Congratulations you are now more than just entry level developer. Now it is time to get into depth 77 | 78 | ### API in depth 79 | 80 | - Learn about API design principles 81 | - Learn DRF Serializers in depth (Relations (1toM, MtoM), Nested Serializers, List Serializers) 82 | - Filtering and Paginating the results 83 | - Documenting your Endpoints 84 | - [Django Rest Framework-Yet Another Swagger Generator](https://drf-yasg.readthedocs.io/en/stable/readme.html) 85 | - Views in Depth (APIViews, GenericAPIViews, ViewSets) 86 | 87 | ### User Management System 88 | 89 | - Authentication vs Authorization 90 | - Learn different types of authorization 91 | - Session Based 92 | - Token Based 93 | - OAuth2 - just the info is enough, it is better to integrate it using Firebase 94 | - What is JWT and how it works 95 | - Django_rest_simplejwt package and basic user log in 96 | - Authentication and Permission Classes 97 | - Custom Permissions 98 | - Protect your Endoints (at least in two level: admin and user) 99 | 100 | ### Testing 101 | 102 | - Learn Types of Testing 103 | - Unit 104 | - Integration 105 | - E2E 106 | - Python Request Package 107 | - Django/DRF test framework 108 | - APIClient, APITestCase, RequestsClient 109 | - Test Coverage 110 | 111 | ### Deployment 112 | 113 | - WSGI and unix sockets 114 | - NGINX and web servers 115 | - Domain Name Service (DNS) 116 | - HTTP vs HTTPS 117 | - Docker 118 | - Docker Compose 119 | - CI/CD 120 | - Pipelines 121 | 122 | ## Finishing :) 123 | 124 | Now you are already at the level of Junior or Strong Junior (based on how you have learned above listed things). 125 | Now I recommend you to build two or three good projects. Your project and codebase the thing that describes you as a developer that's why do it with all your attention. Below I list some easy projects to get started 126 | 127 | 1. Todo app 128 | 2. Blog 129 | 3. Simple e-commerce 130 | 4. Q&A (Question and Answer) webplatform 131 | 5. ... 132 | 133 | Feel free to contribute 134 | 135 | ###### Side note 136 | 137 | Please choose one field in the starting point. It can either be Back-end or Front-end or Dev-Ops or may be QA. You do not have to know all the things when starting, it just slows your learning speed. So Implementing just back-end for above projects is quite enough to get started with job or startup 138 | 139 | #### TLDR: Just implement back-end 140 | 141 | --- 142 | 143 | > Whenever you can please espace monolithic hell and migrate towards microservices 144 | -------------------------------------------------------------------------------- /python-django.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abdukhashimov/python-django-simple-roadmap/f761f479434b876eaa374a1d020177406187ae64/python-django.png --------------------------------------------------------------------------------