本文概述
- 运行服务器
- 访问浏览器
- 添加记录
- 更新记录
- 删除记录
1.创建一个项目
$ django-admin startproject crudexample
2.创建一个应用
$ python3 manage.py startapp employee
3.项目结构
最初, 我们的项目如下所示:
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.项目结构
12.创建迁移
使用以下命令为创建的模型雇员创建迁移。
$ python3 manage.py makemigrations
迁移后, 再执行一条命令以反映向数据库的迁移。但在此之前, 请在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
现在, 我们的应用程序已成功连接并在数据库中创建了表。它创建了10个用于处理项目(会话, 身份验证等)的默认表, 以及我们创建的模型的一个表。
请参阅在migrate命令之后创建的表的列表。
运行服务器 要运行服务器, 请使用以下命令。
$ python3 manage.py runserver
访问浏览器 通过输入localhost:8000 / show访问该应用程序, 它将显示所有可用的员工记录。
最初, 没有记录。因此, 它没有显示记录消息。
添加记录 单击添加新记录按钮, 然后填写详细信息。参见示例。
填写细节。
提交记录, 并看到提交后显示已保存的记录。
本节还允许, 更新和删除操作列中的记录。
保存了几条记录后, 现在我们有了以下记录。
更新记录 通过单击编辑按钮来更新Mohan的记录。它将在编辑模式下显示Mohan的记录。
让我们假设我将mohan更新为mohan kumar, 然后单击更新按钮。它立即更新记录。参见示例。
单击更新按钮, 它将重定向到下一页。看到名称已更新。
同样, 我们也可以通过单击删除链接来删除记录。
删除记录 假设我要删除Sohan, 可以通过单击删除按钮轻松完成。参见示例。
删除后, 我们留下了以下记录。
好了, 我们已经使用Django成功创建了CRUD应用程序。
这个完整的项目可以在这里下载。
推荐阅读
- 使用Django创建CSV
- Django Cookie使用
- Django应用程序
- 使用Apache Web服务器进行Django配置
- 带有Bootstrap的Django
- Django管理界面
- Writing your first Django app--2017年5月9日
- Python知识点系列详解|Python网站开发必备-django模板自定义标签
- vue|基于Vue+elementUI+django前后端分离员工管理系统