首頁 > 軟體

Django完整增刪改查系統範例程式碼

2022-08-19 14:02:05

一、效果圖如下

二、使用步驟

1.建立並設定一個django專案

1.1新建一個專案ch3

django-admin startproject ch3

1.2建立應用employee

python manage.py startapp employee

1.3指定ch3專案的應用程式emyployee

在setting.py中INSTALLED_APPS下加入employee應用程式

1.4與資料庫相連

1.在資料庫中建立一個資料庫名為testOrm
2.在setting.py檔案新增與資料庫連線的資訊
3.新增模資料夾

1.5 定義與使用模型

模型定義在應用employee的model.py檔案中,並繼承model.Model類。在本次專案中定義了模型類department

class department(models.Model):
    dep_name=models.CharField(max_length=32,verbose_name='部門名稱',unique=True,blank=False)
    dep_script=models.CharField(max_length=60,verbose_name='備註說明',null=True

1.6生成遷移檔案

python manage.py makemigrations

執行生產遷移命令後會生成一下0001_initial.py檔案

遷移檔案生成後,使用遷移檔案命令生成對應的資料表

python manage.py migrate

二、實現資料庫增刪改查

2.1檢視檔案

實現增刪改查的方法

# 查詢所有資料
def list_dep_old(request):
    # 查詢所有資料
    def_list=department.objects.all()#查詢方法:all(),filter(),exclude(),get()
    return render(request,'test_orm_old/list_dep_old.html',{'dep_list':def_list})
#新增資料
def add_dep_old(request):
    # 判斷請求方式,如果post,說明前端需要提交資料
    if request.method=='POST':
        # 獲取傳過來的get()函數中的引數(html檔案input()標籤的name屬性)
        dep_name=request.POST.get('dep_name')
        dep_script=request.POST.get('dep_script')
    # strip()過濾
        if dep_name.strip()=='':
            return render(request,'test_orm_old/add_dep_old.html',{'error_info':'名稱不能為空'})
        # 用create()函數新建一條函數,會自動儲存,不需要呼叫save()函數
        try:
            # 新增資料有兩種方式:1.使用模型管理器的create()方法新增資料,2.使用模型實列save()方法儲存
            p=department.objects.create(dep_name=dep_name,dep_script=dep_script)
            return redirect('/test_orm_old/list_dep_old/')
        except Exception as e:
            return render(request,'test_orm_old/add_dep_old.html',{'error_info':'輸入部門名稱重複或資訊錯誤!'})
        finally:
            pass
    return render(request,'test_orm_old/add_dep_old.html/')
#刪除資料
def del_dep_old(request,dep_id):
    dep_object=department.objects.get(id=dep_id)
    dep_object.delete()
    return redirect('/test_orm_old/list_dep_old/')
#修改資料
def edit_dep_old(request,dep_id):
    if request.method=='POST':
        id=request.POST.get('id')
        dep_name=request.POST.get('dep_name')
        dep_script=request.POST.get('dep_script')
        dep_object=department.objects.get(id=id)
        dep_object.dep_name=dep_name
        dep_object.dep_script=dep_script
        dep_object.save()
        return redirect('/test_orm_old/list_dep_old/')
    else:
        dep_object=department.objects.get(id=dep_id)
        return render(request,'test_orm_old/edit_dep_old.html',{'department':dep_object})

2.2前端頁面

1.在應用下建立templates檔案目錄用來存放前端頁面檔案
2.並在templates下建立test_orm_old檔案目錄

2.2.1主頁面(list_dep_old.xml)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主頁面</title>
</head>
<body>
<h1>部門列表</h1>
<div><a href="/test_orm_old/add_dep_old" rel="external nofollow" >增加一條記錄</a></div>
<table border="1">
    <thead>
    <tr>
        <td>部門名稱</td>
        <td>備註說明</td>
        <td colspan="2">操作</td>
    </tr>
    </thead>
    <tbody>
    {% for dep in dep_list %}
    <tr>
        <td>{{ dep.dep_name }}</td>
        <td>{{ dep.dep_script}}</td>
        <td><a href="/test_orm_old/del_dep_old/{{dep.id}}/" rel="external nofollow" >刪除</a> </td>
        <td><a href="/test_orm_old/edit_dep_old/{{dep.id}}/" rel="external nofollow" >修改</a> </td>
    </tr>
    {% empty %}
        <tr>
            <td colspan="4">無相關記錄!</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
</body>
</html>

2.2.2增加資料頁面(add_dep_old.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加部門</title>
</head>
<body>
<div align="center">
    <h1>增加部門</h1>
    <hr>
    <form action="" method="post">
<!--        安全機制-->
        {% csrf_token %}
        <input type="hidden" name="id" id="id" value="{{ department.id }}">
        <div>
            <label>部門名稱:</label>
                <input type="text" name="dep_name" id="dep_name">
        </div>
        <br>
        <div>
            <label>備註說明:</label>
                <input type="text" name="dep_script" id="dep_script">
        </div>
        <br>
        <div>
            <input type="submit" value="儲存">
        </div>
    </form>
    {{ error_info }}
</div>
</body>
</html>

2.2.3修改頁面(edit_dep_old.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改部門</title>
</head>
<body>
<div align="center">
    <h1>修改部門</h1>
    <form action="" method="post">
        {% csrf_token %}
        <input type="hidden" name="id" id="id" value="{{ department.id}}">
        <div>
            <label>部門:</label>
                <input type="text" name="dep_name" id="dep_name" value="{{ department.dep_name }}">
        </div>
        <br>
        <div>
            <label>備註:</label>
                <input type="text" name="dep_script" id="dep_script" value="{{ department.dep_script}}">
        </div>
        <br>
        <div><input type="submit" value="儲存"></div>
    </form>
    {{ error_info }}
</div>
</body>
</html>

2.3在主專案中新增路由

from django.contrib import admin
from django.urls import path,include

from employee import views

urlpatterns = [
    path('admin/', admin.site.urls),
    # path('',include('employee.urls')),
    path('test/',views.test),
    path('list_dep_old/',views.list_dep_old),
    path('test_orm_old/list_dep_old/',views.list_dep_old),
    path('test_orm_old/add_dep_old/',views.add_dep_old),
    path('test_orm_old/del_dep_old/<int:dep_id>/',views.del_dep_old),
]

總結

注意一定要設定好每一步。

到此這篇關於Django完整增刪改查系統的文章就介紹到這了,更多相關Django增刪改查系統內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com