在Django中实现一个学生类(Student)的CRUD(创建、读取、更新、删除)操作需要几个步骤,包括定义模型、创建视图、设置URL、以及配置模板。以下是一个基本的实现步骤:
1. 创建Django项目和应用
首先,确保你已经安装了Django,然后创建一个新的Django项目和应用:
django-admin startproject student_crud_project cd student_crud_project django-admin startapp students
2. 定义模型(Model)
在students/models.py
中定义学生模型:
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
age = models.IntegerField()
def __str__(self):
return self.name
2.1 配置MySQL数据库,在settings.py文件中配置DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'students',
'USER': 'root',
'PASSWORD': 'admin',
'HOST': 'localhost',
'PORT': '3306',
}
}
2.2 在自己创建的app的init文件中,这是默认数据库连接替换成pymysql的连接
import pymysql
pymysql.install_as_MySQLdb()
3. 注册模型
在students/admin.py
中注册模型以便在Django admin中管理:
from django.contrib import admin from .models import Student admin.site.register(Student)
4. 创建和应用迁移
运行以下命令以创建和应用数据库迁移:
python manage.py makemigrations
python manage.py migrate
5. 创建表单(Form)
在students/forms.py
中创建学生表单:
from django import forms
from .models import Student
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ['name', 'email', 'age']
6. 创建视图(Views)
在students/views.py
中创建CRUD视图:
from django.shortcuts import render, get_object_or_404, redirect
from .models import Student
from .forms import StudentForm
# List all students
def student_list(request):
students = Student.objects.all()
return render(request, 'students/student_list.html', {'students': students})
# Create a new student
def student_create(request):
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
form.save()
return redirect('student_list')
else:
form = StudentForm()
return render(request, 'students/student_form.html', {'form': form})
# Update an existing student
def student_update(request, student_id):
student = get_object_or_404(Student, id=student_id)
if request.method == 'POST':
form = StudentForm(request.POST, instance=student)
if form.is_valid():
form.save()
return redirect('student_list')
else:
form = StudentForm(instance=student)
return render(request, 'students/student_form.html', {'form': form})
# Delete an existing student
def student_delete(request, student_id):
student = get_object_or_404(Student, id=student_id)
if request.method == 'POST':
student.delete()
return redirect('student_list')
return render(request, 'students/student_confirm_delete.html', {'student': student})
7. 设置URL
在students/urls.py
中设置URL路由:
from django.urls import path
from . import views
urlpatterns = [
path('', views.student_list, name='student_list'),
path('create/', views.student_create, name='student_create'),
path('<int:student_id>/update/', views.student_update, name='student_update'),
path('<int:student_id>/delete/', views.student_delete, name='student_delete'),
]
然后在student_crud_project/urls.py
中包含应用的URL:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('students/', include('students.urls')),
]
8. 创建模板
在students/templates/students/
目录下创建以下模板文件:
student_list.html
student_form.html
student_confirm_delete.html
student_list.html
<!DOCTYPE html>
<html>
<head>
<title>Student List</title>
</head>
<body>
<h1>Students</h1>
<ul>
{% for student in students %}
<li>
{{ student.name }} - {{ student.email }} - {{ student.age }}
<a href="{% url 'student_update' student.id %}">Edit</a>
<a href="{% url 'student_delete' student.id %}">Delete</a>
</li>
{% endfor %}
</ul>
<a href="{% url 'student_create' %}">Create New Student</a>
</body>
</html>
student_form.html
<!DOCTYPE html>
<html>
<head>
<title>Student Form</title>
</head>
<body>
<h1>Create/Update Student</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
<a href="{% url 'student_list' %}">Cancel</a>
</body>
</html>
student_confirm_delete.html
<!DOCTYPE html>
<html>
<head>
<title>Confirm Delete</title>
</head>
<body>
<h1>Delete Student</h1>
<p>Are you sure you want to delete "{{ student.name }}"?</p>
<form method="post">
{% csrf_token %}
<button type="submit">Delete</button>
</form>
<a href="{% url 'student_list' %}">Cancel</a>
</body>
</html>
9. 启动服务器
最后,启动Django开发服务器:
python manage.py runserver
现在,你可以通过访问http://127.0.0.1:8000/students/
来查看和操作学生记录。
这就是在Django中实现学生类CRUD操作的基本步骤。你可以根据需要进一步扩展和自定义这些功能。