Crud App Using Django From Scratch
Crud App Using Django From Scratch
Application in Django
A CRUD (Create, Read, Update, Delete) application allows users to perform basic database
operations. We'll build a simple Django app to manage a list of books with fields like title,
author, and published_date.
cd crud_project
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
published_date = models.DateField()
def __str__(self):
return self.title
To manage books from the admin panel, register the model in books/admin.py.
admin.site.register(Book)
Now, create a superuser to access the Django admin panel:
def book_list(request):
books = Book.objects.all()
def book_create(request):
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm()
if request.method == "POST":
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm(instance=book)
# Delete a book
if request.method == "POST":
book.delete()
return redirect('book_list')
class BookForm(forms.ModelForm):
class Meta:
model = Book
Create books/urls.py.
urlpatterns = [
]
Include these URLs in crud_project/urls.py.
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', include('books.urls')),
Inside the books app, create a templates/books/ folder and add the following files:
<!DOCTYPE html>
<html>
<head>
<title>Book List</title>
</head>
<body>
<h1>Books</h1>
<ul>
<li>
</li>
{% endfor %}
</ul>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Book Form</title>
</head>
<body>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Delete Book</title>
</head>
<body>
{% csrf_token %}
</form>
</body>
</html>
Conclusion
You have successfully built a CRUD application in Django. This project covers: