Django 创建读取更新删除(CRUD)示例

Django 创建读取更新删除(CRUD)示例

要创建一个执行CRUD操作的Django应用程序,请按照以下步骤操作。

1. 创建一个项目

$ django-admin startproject crudexample

Django 创建读取更新删除(CRUD)示例

2. 创建一个应用程序

$ python3 manage.py startapp employee

Django 创建读取更新删除(CRUD)示例

3. 项目结构

最初,我们的项目结构如下:

Django 创建读取更新删除(CRUD)示例

4. 数据库设置

在mysql中创建一个名为 djangodb 的数据库,并将其配置到django项目的 settings.py 文件中。参考以下示例。

// settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangodb',
        'USER':'root',
        'PASSWORD':'mysql',
        'HOST':'localhost',
        'PORT':'3306'
    }
}

5. 创建一个模型

将以下代码放入 models.py 文件中。

// models.py

from django.db import models
class Employee(models.Model):
    eid = models.CharField(max_length=20)
    ename = models.CharField(max_length=100)
    eemail = models.EmailField()
    econtact = models.CharField(max_length=15)
    class Meta:
        db_table = "employee"

6. 创建一个ModelForm

// forms.py

from django import forms
from employee.models import Employee
class EmployeeForm(forms.ModelForm):
    class Meta:
        model = Employee
        fields = "__all__"

7. 创建视图函数

// views.py

from django.shortcuts import render, redirect
from employee.forms import EmployeeForm
from employee.models import Employee
# Create your views here.
def emp(request):
    if request.method == "POST":
        form = EmployeeForm(request.POST)
        if form.is_valid():
            try:
                form.save()
                return redirect('/show')
            except:
                pass
    else:
        form = EmployeeForm()
    return render(request,'index.html',{'form':form})
def show(request):
    employees = Employee.objects.all()
    return render(request,"show.html",{'employees':employees})
def edit(request, id):
    employee = Employee.objects.get(id=id)
    return render(request,'edit.html', {'employee':employee})
def update(request, id):
    employee = Employee.objects.get(id=id)
    form = EmployeeForm(request.POST, instance = employee)
    if form.is_valid():
        form.save()
        return redirect("/show")
    return render(request, 'edit.html', {'employee': employee})
def destroy(request, id):
    employee = Employee.objects.get(id=id)
    employee.delete()
    return redirect("/show")

8. 提供路由

提供URL模式与视图函数进行映射。

// urls.py

from django.contrib import admin
from django.urls import path
from employee import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('emp', views.emp),
    path('show',views.show),
    path('edit/<int:id>', views.edit),
    path('update/<int:id>', views.update),
    path('delete/<int:id>', views.destroy),
]

9. 组织模板

employee 应用程序中创建一个 templates 文件夹,并在文件夹中创建三个HTML文件(index,edit,show)。每个文件的代码如下所示。

// index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    {% load staticfiles %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}"/>
</head>
<body>
<form method="POST" class="post-form" action="/emp">
        {% csrf_token %}
    <div class="container">
<br>
    <div class="form-group row">
    <label class="col-sm-1 col-form-label"></label>
    <div class="col-sm-4">
    <h3>Enter Details</h3>
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Id:</label>
    <div class="col-sm-4">
      {{ form.eid }}
    </div>
  </div>
  <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Name:</label>
    <div class="col-sm-4">
      {{ form.ename }}
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Email:</label>
    <div class="col-sm-4">
      {{ form.eemail }}
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Contact:</label>
    <div class="col-sm-4">
      {{ form.econtact }}
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-1 col-form-label"></label>
    <div class="col-sm-4">
    <button type="submit" class="btn btn-primary">Submit</button>
    </div>
  </div>
    </div>
</form>
</body>
</html>

// view.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Employee Records</title>
     {% load staticfiles %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}"/>
</head>
<body>
<table class="table table-striped table-bordered table-sm">
    <thead class="thead-dark">
    <tr>
        <th>Employee ID</th>
        <th>Employee Name</th>
        <th>Employee Email</th>
        <th>Employee Contact</th>
        <th>Actions</th>
    </tr>
    </thead>
    <tbody>
{% for employee in employees %}
    <tr>
        <td>{{ employee.eid }}</td>
        <td>{{ employee.ename }}</td>
        <td>{{ employee.eemail }}</td>
        <td>{{ employee.econtact }}</td>
        <td>
            <a href="/edit/{{ employee.id }}"><span class="glyphicon glyphicon-pencil" >Edit</span></a>
            <a href="/delete/{{ employee.id }}">Delete</a>
        </td>
    </tr>
{% endfor %}
    </tbody>
</table>
<br>
<br>
<center><a href="/emp" class="btn btn-primary">Add New Record</a></center>
</body>
</html>

// edit.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    {% load staticfiles %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}"/>
</head>
<body>
<form method="POST" class="post-form" action="/update/{{employee.id}}">
        {% csrf_token %}
    <div class="container">
<br>
    <div class="form-group row">
    <label class="col-sm-1 col-form-label"></label>
    <div class="col-sm-4">
    <h3>Update Details</h3>
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Id:</label>
    <div class="col-sm-4">
        <input type="text" name="eid" id="id_eid" required maxlength="20" value="{{ employee.eid }}"/>
    </div>
  </div>
  <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Name:</label>
    <div class="col-sm-4">
        <input type="text" name="ename" id="id_ename" required maxlength="100" value="{{ employee.ename }}" />
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Email:</label>
    <div class="col-sm-4">
        <input type="email" name="eemail" id="id_eemail" required maxlength="254" value="{{ employee.eemail }}" />
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-2 col-form-label">Employee Contact:</label>
    <div class="col-sm-4">
        <input type="text" name="econtact" id="id_econtact" required maxlength="15" value="{{ employee.econtact }}" />
    </div>
  </div>
    <div class="form-group row">
    <label class="col-sm-1 col-form-label"></label>
    <div class="col-sm-4">
    <button type="submit" class="btn btn-success">Update</button>
    </div>
  </div>
    </div>
</form>
</body>
</html>

10. 静态文件处理

employee 应用程序内创建一个名为 static/css 的文件夹,并且在其中放入一个css文件。在这里下载css文件 点击这里。

11. 项目结构

Django 创建读取更新删除(CRUD)示例

12. 创建迁移

为已创建的employee模型创建迁移,使用以下命令。

$ python3 manage.py makemigrations

Django 创建读取更新删除(CRUD)示例

迁移完成后,再执行一条命令将迁移反映到数据库中。但在此之前,在settings.py文件的INSTALLED_APPS中提及应用程序的名称(employee)。

// settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'employee'
]

运行命令以迁移迁移。

$ python3 manage.py migrate

Django 创建读取更新删除(CRUD)示例

现在,我们的应用程序已成功连接并在数据库中创建了表。它创建了10个默认表来处理项目(会话、身份验证等),以及我们创建的模型的一个表。

查看在迁移命令后创建的表列表。

Django 创建读取更新删除(CRUD)示例

运行服务器

要运行服务器,请使用以下命令。

$ python3 manage.py runserver

Django 创建读取更新删除(CRUD)示例

浏览器访问

通过输入 localhost:8000/show 来访问应用程序,它会显示所有可用的员工记录。

最初,没有记录。因此,它会显示没有记录的消息。

Django 创建读取更新删除(CRUD)示例

添加记录

点击 新增记录 按钮并填写详情。请参考示例。

Django 创建读取更新删除(CRUD)示例

填写详细信息。

Django 创建读取更新删除(CRUD)示例

提交记录并查看,提交后会显示保存的记录。

Django 创建读取更新删除(CRUD)示例

这一部分还允许从 actions 栏目更新和删除记录。

保存了几条记录后,现在我们有以下记录。

Django 创建读取更新删除(CRUD)示例

更新记录

让我们通过点击 编辑 按钮来更新 Mohan 的记录。它将以编辑模式显示Mohan的记录。

Django 创建读取更新删除(CRUD)示例

假设我将 mohan 更新为 mohan kumar 然后点击更新按钮。它会立即更新记录。请参考示例。

Django 创建读取更新删除(CRUD)示例

点击更新按钮,将会重定向到以下页面。查看名称是否已更新。

Django 创建读取更新删除(CRUD)示例

同样的,我们也可以通过点击 删除 链接来删除记录。

删除记录

假设我想删除 Sohan ,只需点击删除按钮即可完成。参考例子。

Django 创建读取更新删除(CRUD)示例

删除后,我们剩下以下记录。

Django 创建读取更新删除(CRUD)示例

好的,我们已经成功使用Django创建了一个CRUD应用程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程