Django CRUD教程

在本教程中,将学习如何使用Django框架和Python 3.7版本快速创建CRUD(创建、读取、更新、删除)视图。CRUD是大多数Web应用程序中用于与数据库数据交互的一组常见操作。它基本上提供了一个CRUD接口,允许用户在应用程序数据库中创建、读取、更新和删除数据,如MySQL、PostgreSQL或Oracle等。

先决条件

在开始之前,需要满足以下先决条件:

  • 一台安装了Python3.7、pip和venv的开发机器。
  • Python基础知识。
  • Django的工作知识。

教程内容

在本教程中,将学习以下内容:

  • Django基于类的视图。
  • 使用venv创建和激活虚拟环境。
  • 使用pip安装Django并使用django-admin.py创建新项目。
  • 使用manage.py创建新的Django应用程序。
  • 创建Django ORM模型。
  • 启用管理员界面。
  • 创建基于类的视图。
  • 创建模板。
  • 添加URL。

创建和激活虚拟环境

在处理新的Python项目时,建议为项目包创建一个虚拟且隔离的环境。在Python 3.7中,可以使用venv模块创建虚拟环境。

$ python -m venv env

创建了一个名为env的虚拟环境。

$ source env/bin/activate

使用source命令激活环境。现在,可以安装项目依赖项,而不必担心干扰其他项目。

安装Django并创建新项目

$ 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访问管理员界面。

创建CRUD视图

将使用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文件,内容如下:

{% for contact in object_list %} {% endfor %}
Name Email Address Phone Actions
{{ contact.name }} {{ contact.email }} {{ contact.address }}

接下来,创建contact_details.html文件,内容如下:

Name: {{ object.name }}

Email: {{ object.email }}

Address: {{ object.address }}

Phone: {{ object.phone }}

接下来,创建contact_form.html文件,该文件将由更新视图使用:

{% csrf_token %} {{ form.as_p }}

最后,需要创建contact_confirm_delete.html文件,该文件将由删除视图使用:

{% csrf_token %} Are you sure you want to delete this contact?

添加URL

最后,需要为定义的视图添加各种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
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485