日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django 项目开发(三)

發布時間:2024/10/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 项目开发(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次完成了首頁的,還有3個簡單的小需要還沒有完善

  • 添加書籍的需求
  • 刪除書籍的需求
  • 書籍的詳細頁
首先介紹下 MVC

MVC簡介

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

  • Model(模型)表示應用程序核心(比如數據庫記錄列表)。
  • View(視圖)顯示數據(數據庫記錄)。
  • Controller(控制器)處理輸入(寫入數據庫記錄)。

Django框架遵循MVC設計,并且有一個專有名詞:MVT

  • M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理。
  • V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。
  • T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。

添加書籍

任何開發都是先編寫后端,在配置路由,最后渲染前端頁面

從View.py開始

添加書籍的本身就是一個提交的過程,所以是POST請求,不是get請求
from?django.shortcuts?import?render,redirect,reverse
from?django.db?import?connection

def?get_corsor():
????#?創建游標
????return?connection.cursor()
def?add_book(request):
????if?request.method?==?'GET':
????????return?render(request,'add_book.html')
????else:
????????name?=?request.POST.get("name")
????????author?=?request.POST.get("author")
????????cursor?=?get_corsor()
????????cursor.execute("insert?into?front_book_manager(id,name,author)?values(null,'%s','%s')"?%?(name,author))
????????#?redirect?重新定向?reverse通過已命名的URL進行渲染
????????return?redirect(reverse('index'))
代碼解析
  • 一開始請求是get請求,來到了add_book.html 頁面中
  • 因為提交是post請求,將數據寫進數據庫,然后在從數據庫拿到數據,重定向到首頁,剛剛添加的圖書就可以顯示

在urls.py配置路由

path('add_book/',?views.add_book,name='add_book'),

最后就是前端add_book.html 頁面的編寫

{%?extends?'base.html'?%}
{%?block?content?%}
????<form?action=""?method="post">
????????<table>
????????????<tbody>
????????????????<tr>
????????????????????<td>書名:</td>
????????????????????<td><input?type="text"?name="name"></td>
????????????????</tr>
????????????????<tr>
????????????????????<td>作者:</td>
????????????????????<td><input?type="text"?name="author"></td>
????????????????</tr>
????????????????<tr>
????????????????????<td></td>
????????????????????<td><input?type="submit"?value="提交"></td>
????????????????</tr>
????????????</tbody>
????????</table>
????</form>
{%?endblock?%}

在前端編寫一個表單不是什么難事,注意以下幾點

  • input標簽必須帶上name屬性,不然提交不了
  • method="post" 表明是post請求,雖然是form默認post請求。

效果如下

書籍的詳細頁

現在要在首頁點擊書名跳轉書籍的詳細頁

分析接口

接口就是前后端約定的api,就是url請求需要啥參數

book_detail/<int:book_id>/這是確保book_id 是int類型


現在規定了book_detail/book_id 是urls

view.py
def?book_detail(request,book_id):
????#?上面定義了創建游標了
????cursor?=?get_corsor()
????#?根據book_id?篩選
????cursor.execute("select?id,name,author?from?front_book_manager?where?id=%s"?%?book_id)
????#?得到返回值book是一個元組
????book?=?cursor.fetchone()
????return?render(request,'book_detail.html',context={"book":book})

在urls.py配置路由

path('book_detail/<int:book_id>/',?views.book_detail,name='book_detail')

book_detail.html 頁面的編寫

{%?extends?'base.html'?%}
{%?block?content?%}
????<p>書名:{{?book.1?}}</p>
????<p>作者:{{?book.2?}}</p>
????<form?action="{%?url?'delete_book'?%}"?method="post">
????????#?拿id來刪除
????????<input?type="hidden"?name="book_id"?value="{{?book.0?}}">?
????????<input?type="submit"?value="刪除按鈕">
????</form>
{%?endblock?%}

效果如下

刪除書籍

現在進去了書籍的詳細頁,就要刪除圖書

接口是delete_book/

View.py 代碼編寫

def?delete_book(request):
????if?request.method?==?'POST':
????????#?上面post請求拿到book_id
????????book_id?=?request.POST.get('book_id')
????????cursor?=?get_corsor()
????????cursor.execute("delete?from?front_book_manager?where?id=%s"?%?book_id)
????????return?redirect(reverse('index'))
????else:
????????raise?RuntimeError("刪除圖書的method錯誤!")

urls.py配置路由

path('delete_book/',views.delete_book,name='delete_book')

效果如下

總結

至此,簡單不能再簡單的項目基本完成,可以說是django的helloWorld,進門級別。

作為python必須web框架的Django,它的功能強大,內容全面,我們學習Django,其實就是學習一個軟件,要理解它的基本原理,把握它整體框架,牢記一些基本規則,剩下的就是不斷深入細節,然后熟能生巧、經驗多少的問題了

總結

以上是生活随笔為你收集整理的Django 项目开发(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。