在本教程中,将学习如何使用Django框架和Python 3.7版本快速创建CRUD(创建、读取、更新、删除)视图。CRUD是大多数Web应用程序中用于与数据库数据交互的一组常见操作。它基本上提供了一个CRUD接口,允许用户在应用程序数据库中创建、读取、更新和删除数据,如MySQL、PostgreSQL或Oracle等。
在开始之前,需要满足以下先决条件:
在本教程中,将学习以下内容:
在处理新的Python项目时,建议为项目包创建一个虚拟且隔离的环境。在Python 3.7中,可以使用venv模块创建虚拟环境。
$ python -m venv env
创建了一个名为env的虚拟环境。
$ source env/bin/activate
使用source命令激活环境。现在,可以安装项目依赖项,而不必担心干扰其他项目。
$ pip install django
使用pip在虚拟环境中安装Django 2。
$ django-admin.py startproject django_crud_cbv
使用django-admin.py创建一个新项目。
$ cd django_crud_cbv
$ python manage.py startapp contacts
这将创建一个名为contacts的应用程序。
需要将此应用程序添加到项目中。打开settings.py文件,并将contacts添加到INSTALLED_APPS数组中:
INSTALLED_APPS = (
# [...]
'contacts',
)
在创建contacts应用程序后,需要一个模型来表示数据库中的联系人。打开contacts/models.py文件并添加以下代码:
from django.contrib.gis.db import models
class Contact(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
address = models.CharField(max_length=100)
phone = models.CharField(max_length=50)
现在已经定义了模型,可以迁移数据库并运行开发服务器。
$ python manage.py makemigrations
$ python manage.py migrate
在项目这一点上,已经可以通过将模型注册到管理员应用程序来拥有一个CRUD界面,这是一个内置的Django应用程序,每个项目都附带。
打开contacts/admin.py文件并注册Contact模型:
from django.contrib import admin
from .models import Contact
admin.site.register(Contact)
可以从http://localhost:8000/admin访问管理员界面。
将使用Django提供的基于类的通用视图来定义自己的CRUD视图,而不是使用管理员界面来执行数据库上的CRUD操作。
打开contacts/views.py文件并开始添加以下导入:
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Contact
现在,可以添加一个使用ListView通用视图类列出联系人的第一个视图:
class ContactList(ListView):
model = Contact
接下来,使用DetailView通用视图类创建一个详细信息视图:
class ContactDetail(DetailView):
model = Contact
接下来,需要添加一个使用CreateView通用视图创建联系人的创建视图:
class ContactCreate(CreateView):
model = Contact
接下来,需要添加一个使用UpdateView视图更新联系人的更新视图:
class ContactUpdate(UpdateView):
model = Contact
最后,需要添加一个使用DeleteView类删除联系人的删除视图:
class ContactDelete(DeleteView):
model = Contact
在定义CRUD视图后,接下来需要为每个视图添加模板。每个视图都期望在应用程序的templates文件夹中有一个特定名称的模板。
在contacts文件夹中,创建一个templates/contacts/文件夹,并开始添加contact_list.html文件,内容如下:
Name
Email
Address
Phone
Actions
{% for contact in object_list %}
{{ contact.name }}
{{ contact.email }}
{{ contact.address }}
{% endfor %}
接下来,创建contact_details.html文件,内容如下:
Name: {{ object.name }}
Email: {{ object.email }}
Address: {{ object.address }}
Phone: {{ object.phone }}
接下来,创建contact_form.html文件,该文件将由更新视图使用:
最后,需要创建contact_confirm_delete.html文件,该文件将由删除视图使用:
最后,需要为定义的视图添加各种URL。打开项目的urls.py文件并添加以下URL:
from django.urls import path
from . import views
urlpatterns = [
# [...]
path('contacts', views.ContactList.as_view(), name='contact_list'),
path('contact/', views.ContactDetail.as_view(), name='contact_detail'),
path('create', views.ContactCreate.as_view(), name='contact_create'),
path('update/', views.ContactUpdate.as_view(), name='contact_update'),
path('delete/', views.ContactDelete.as_view(), name='contact_delete'),
]
最后,可以使用以下命令运行开发服务器:
$ python manage.py runserver