Django 的增删改查(CRUD)项目,并提供详细的代码实现和说明:
打开终端或命令提示符,执行以下命令:
# 创建一个新的 Django 项目
django-admin startproject book_management_project
# 切换到项目目录
cd book_management_project
# 在项目中创建一个新的应用程序
python manage.py startapp books
打开 books/models.py
文件,定义 Book
模型:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
publication_date = models.DateField()
def __str__(self):
return self.title
运行以下命令来创建必要的数据库表格:
python manage.py makemigrations
python manage.py migrate
打开 books/views.py
文件,定义用于 CRUD 操作的视图:
from django.shortcuts import render, redirect, get_object_or_404
from .models import Book
from .forms import BookForm
def book_list(request):
books = Book.objects.all()
return render(request, 'books/book_list.html', {'books': books})
def add_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm()
return render(request, 'books/add_book.html', {'form': form})
def edit_book(request, pk):
book = get_object_or_404(Book, pk=pk)
if request.method == 'POST':
form = BookForm(request.POST, instance=book)
if form.is_valid():
form.save()
return redirect('book_list')
else:
form = BookForm(instance=book)
return render(request, 'books/edit_book.html', {'form': form})
def delete_book(request, pk):
book = get_object_or_404(Book, pk=pk)
if request.method == 'POST':
book.delete()
return redirect('book_list')
return render(request, 'books/delete_book.html', {'book': book})
在 books
应用程序目录中创建一个名为 forms.py
的新文件,并定义 BookForm
:
from django import forms
from .models import Book
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['title', 'author', 'publication_date']
在 books
应用程序目录中创建一个名为 templates
的新文件夹。在该文件夹中,创建三个新的 HTML 文件: book_list.html
、 add_book.html
、 edit_book.html
和 delete_book.html
。
book_list.html
:
<!DOCTYPE html>
<html>
<head>
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
{% for book in books %}* {{ book.title }} - {{ book.author }} ({{ book.publication_date }})
<a href="{% url 'add_book' %}">添加图书</a>
</body>
</html>
add_book.html
:
<!DOCTYPE html>
<html>
<head>
<title>添加图书</title>
</head>
<body>
<h1>添加图书</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="保存">
</form>
</body>
</html>
edit_book.html
:
<!DOCTYPE html>
<html>
<head>
<title>编辑图书</title>
</head>
<body>
<h1>编辑图书</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="保存">
</form>
</body>
</html>
delete_book.html
:
<!DOCTYPE html>
<html>
<head>
<title>删除图书</title>
</head>
<body>
<h1>删除图书</h1>
<p>确定要删除 "{{ book.title }}" 吗?</p>
<form method="post">
{% csrf_token %}
<input type="submit" value="删除">
</form>
</body>
</html>
打开 books/urls.py
文件,定义用于 CRUD 视图的 URL:
from django.urls import path
from . import views
urlpatterns = [
path('', views.book_list, name='book_list'),
path('add/', views.add_book, name='add_book'),
path('edit/<int:pk>/', views.edit_book, name='edit_book'),
path('delete/<int:pk>/', views.delete_book, name='delete_book'),
]
然后,打开 book_management_project/urls.py
文件,并包含应用程序的 URL:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', include('books.urls')),
]
运行以下命令启动开发服务器:
python manage.py runserver
现在,您可以在网页浏览器中访问 http://127.0.0.1:8000/books/
来查看图书列表,并可以添加、编辑和删除图书。
请注意,这只是一个基本的实现。在实际应用中,您可能还需要添加更多功能,处理用户认证,并实现安全措施以防止未经授权的访问 CRUD 操作。但是,此示例应该为您构建 Django 项目中的 CRUD 功能提供了一个很好的起点。