網站首頁 編程語言 正文
一、效果圖如下
二、使用步驟
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" >增加一條記錄</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}}/" >刪除</a> </td>
<td><a href="/test_orm_old/edit_dep_old/{{dep.id}}/" >修改</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),
]
總結
注意一定要配置好每一步。
原文鏈接:https://blog.csdn.net/m0_58877630/article/details/123855277
相關推薦
- 2022-11-06 MobLink?Android端業務場景簡單說明_Android
- 2023-06-04 pycharm中下載的包但是import還是無法使用/報紅的解決方法_python
- 2024-07-13 ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunnin
- 2022-09-05 Golang中的Interface詳解_Golang
- 2022-04-01 用C語言實現推箱子游戲實例_C 語言
- 2022-06-23 Android中的dumpsys命令詳解_Android
- 2022-05-20 python繪制餅圖的方法詳解_python
- 2022-07-13 SpringCloud之http客戶端Feign
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支