Auth, APIs & Project›Core· 180 min read
Project: Build a Django App
Build a complete, database-driven web app with Python and Django.
What you will learn
- Combine models, views, templates and the admin
- Build full CRUD
- Add login
The brief
Build a real app — a blog, a task manager, a notes app, or a simple shop — using everything you have learned.
Requirements
- A project with at least one app and a model.
- Migrations run; data manageable in the admin.
- Pages to list and view records (templates + ORM).
- A form to add records (with
{% csrf_token %}). - Edit and delete (full CRUD).
- A simple login protecting the create/edit/delete pages.
Build it in order
Do not try to build everything at once. Follow these steps in order — each one builds on the last, and each comes straight from a lesson you have already done:
- Set up the project and an app, then run the dev server (the Setting Up Django lesson).
- Write your model in
models.py, then runmakemigrationsandmigrateto create the table (the Models & Migrations lesson). - Create a superuser and register the model in
admin.py, then add a few records through/admin(the Admin & ORM lesson). - Build a list page: a view that calls
objects.all()and a template that loops over the records (the Templates and CRUD lessons). - Add a create form with
{% csrf_token %}and a view that saves the submitted data (the CRUD & Forms lesson). - Add edit and delete views to finish full CRUD.
- Add login and put
@login_requiredon the create, edit and delete views so only signed-in users can change data (the Users & Authentication lesson).
Tip: Build one piece at a time: model → admin → list page → add form → edit/delete → login. A small finished app beats a big unfinished one.
Note: When this works you’ve built a full Python web application — exactly what a junior Django developer does on the job. Add it to your portfolio!
✍️ Practice
- Build the app meeting all six requirements.
- Test create, read, update, delete and login.
🏠 Homework
- Write a short README describing your app and add it to GitHub.