<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
django-admin startproject ch3
python manage.py startapp employee
在setting.py中INSTALLED_APPS下加入employee應用程式
1.在資料庫中建立一個資料庫名為testOrm
2.在setting.py檔案新增與資料庫連線的資訊
3.新增模資料夾
模型定義在應用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
python manage.py makemigrations
執行生產遷移命令後會生成一下0001_initial.py檔案
遷移檔案生成後,使用遷移檔案命令生成對應的資料表
python manage.py migrate
實現增刪改查的方法
# 查詢所有資料 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})
1.在應用下建立templates檔案目錄用來存放前端頁面檔案
2.並在templates下建立test_orm_old檔案目錄
<!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>
<!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>
<!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>
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!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45