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 modelsclass 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 formsfrom employee.models import Employeeclass EmployeeForm(forms.ModelForm):class Meta:model = Employeefields = "__all__"

7.创建视图功能
// views.py
from django.shortcuts import render, redirectfrom employee.forms import EmployeeFormfrom 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:passelse: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 adminfrom django.urls import pathfrom employee import viewsurlpatterns = [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), ]

【Django CRUD(创建读取更新删除)示例】9.组织模板
在员工应用程序内创建一个模板文件夹, 并在目录内创建三个(索引, 编辑, 显示)html文件。每个代码如下。
// index.html
< !DOCTYPE html> < html lang="en"> < head> < meta charset="UTF-8"> < title> Index< /title> {% load staticfiles %}< link rel="stylesheet" href="http://www.srcmini.com/{% 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>

// show.html
< !DOCTYPE html> < html lang="en"> < head> < meta charset="UTF-8"> < title> Employee Records< /title> {% load staticfiles %}< link rel="stylesheet" href="http://www.srcmini.com/{% 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="http://www.srcmini.com/edit/{{ employee.id }}"> < span class="glyphicon glyphicon-pencil" > Edit< /span> < /a> < a href="http://www.srcmini.com/delete/{{ employee.id }}"> Delete< /a> < /td> < /tr> {% endfor %}< /tbody> < /table> < br> < br> < center> < a href="http://www.srcmini.com/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="http://www.srcmini.com/{% 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="http://www.srcmini.com/{{ 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="http://www.srcmini.com/{{ 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="http://www.srcmini.com/{{ 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="http://www.srcmini.com/{{ 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.静态文件处理
在员工应用中创建一个static / css文件夹, 然后在其中放置一个CSS。单击此处下载css文件。
11.项目结构
Django CRUD(创建读取更新删除)示例 12.创建迁移
使用以下命令为创建的模型雇员创建迁移。
$ python3 manage.py makemigrations

Django CRUD(创建读取更新删除)示例 迁移后, 再执行一条命令以反映向数据库的迁移。但在此之前, 请在settings.py文件的INSTALLED_APPS中提及应用程序(员工)的名称。
// 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个用于处理项目(会话, 身份验证等)的默认表, 以及我们创建的模型的一个表。
请参阅在migrate命令之后创建的表的列表。
Django CRUD(创建读取更新删除)示例 运行服务器 要运行服务器, 请使用以下命令。
$ python3 manage.py runserver

Django CRUD(创建读取更新删除)示例 访问浏览器 通过输入localhost:8000 / show访问该应用程序, 它将显示所有可用的员工记录。
最初, 没有记录。因此, 它没有显示记录消息。
Django CRUD(创建读取更新删除)示例 添加记录 单击添加新记录按钮, 然后填写详细信息。参见示例。
Django CRUD(创建读取更新删除)示例 填写细节。
Django CRUD(创建读取更新删除)示例 提交记录, 并看到提交后显示已保存的记录。
Django CRUD(创建读取更新删除)示例 本节还允许, 更新和删除操作列中的记录。
保存了几条记录后, 现在我们有了以下记录。
Django CRUD(创建读取更新删除)示例 更新记录 通过单击编辑按钮来更新Mohan的记录。它将在编辑模式下显示Mohan的记录。
Django CRUD(创建读取更新删除)示例 让我们假设我将mohan更新为mohan kumar, 然后单击更新按钮。它立即更新记录。参见示例。
Django CRUD(创建读取更新删除)示例 单击更新按钮, 它将重定向到下一页。看到名称已更新。
Django CRUD(创建读取更新删除)示例 同样, 我们也可以通过单击删除链接来删除记录。
删除记录 假设我要删除Sohan, 可以通过单击删除按钮轻松完成。参见示例。
Django CRUD(创建读取更新删除)示例 删除后, 我们留下了以下记录。
Django CRUD(创建读取更新删除)示例 好了, 我们已经使用Django成功创建了CRUD应用程序。
这个完整的项目可以在这里下载。

    推荐阅读