国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【web框架】——Django——如桃花來

這篇具有很好參考價值的文章主要介紹了【web框架】——Django——如桃花來。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

web框架介紹:

  • web框架就是一個骨架和開發(fā)的一系列工具的集合。我們只需要通過一些工具稍作修飾即可完成一個作品。方便web開發(fā) , 不需要一直做一些重復(fù)性的操作。相當于一個半成品
  • web框架的存在可以減少應(yīng)用開發(fā)的周期 , 提高效率與質(zhì)量 ; 降低維護成本。
  • 所有的web框架的本質(zhì)就是一個socket服務(wù)端;用戶通過瀏覽器進行數(shù)據(jù)訪問,瀏覽器就充當了socket客戶端。

常見軟件的架構(gòu):

CS架構(gòu):

CS:(Clinet & Server) 服務(wù)端和客戶端的架構(gòu),這個架構(gòu)是從用戶層面進行劃分的,通過這個架構(gòu)開發(fā)出來的東西對用戶的系統(tǒng)環(huán)境依賴比較大。
(微信 , 抖音 , QQ , pycharm……),一般都需要進行下載。

BS架構(gòu):

BS:(Browser & Server) 瀏覽器和服務(wù)端架構(gòu) , 這個模式下用戶只需要通過瀏覽器發(fā)送http協(xié)議請求就可以獲取到對應(yīng)的資源.(百度 ,博客園 , 力扣 , CSDN , B站…… ),一般可以通過瀏覽器在線訪問。

BS的本質(zhì)也是CS架構(gòu) , BS中瀏覽器充當了客戶端。

網(wǎng)絡(luò)通信:

socket知識復(fù)習(xí):

服務(wù)端代碼邏輯:

socket服務(wù)端:

  1. 創(chuàng)建socket對象
  2. 綁定IP和端口號(1024-65535)
  3. 設(shè)置監(jiān)聽,最大連接數(shù)
  4. 創(chuàng)立對等連接套接字
  5. 等待客戶端的連接
  6. 數(shù)據(jù)的接收與發(fā)送
  7. 關(guān)閉

客戶端代碼邏輯:

socket客戶端:

  1. 創(chuàng)建socket對象
  2. 連接服務(wù)端的IP和端口號
  3. 數(shù)據(jù)的接收與發(fā)送
  4. 關(guān)閉

socket代碼演示:

服務(wù)端代碼演示:

import socket

server = socket.socket() #默認是TCP協(xié)議
server.bind(("127.0.0.1",8098)) #以元組形式傳入,綁定端口號和IP
server.listen(5)

while True:
	conn,addr = server.accept() #創(chuàng)立對等連接套接字
	print(conn) #<socket.socket fd=400, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8098), raddr=('127.0.0.1', 53894)>,這是連接對象,接收和發(fā)送數(shù)據(jù)用連接對象
	print(addr) #('127.0.0.1', 53894)
	data = conn.recv(1024)
	print(data.decode('utf-8'))
	conn.send(data)

客戶端代碼演示:

import socket

client = socket.socket()
client.connect(("127.0.0.1",8098))

while True:
	message = input("請輸入你給客戶端發(fā)送的信息:")
	if not message:continue #如果數(shù)據(jù)為空,則不發(fā)送。這一代碼是避免發(fā)送空數(shù)據(jù)過去
	if message == "q":break #手動輸入q結(jié)束
	client.send(message.encode("utf-8"))
	data = client.recv(1024)
	print(data.decode("utf-8"))

tips: 我可以通過這種方式在不同電腦上進行數(shù)據(jù)傳輸么?

在其他電腦上寫一個socket寫一個客戶端 , 訪問我的服務(wù)端。(前提兩臺電腦必須是在同一個局域網(wǎng)中。)

手寫框架:

基于socket實現(xiàn)框架:

我們把127.0.0.1:8099輸入瀏覽器進行訪問

import socket
server = socket.socket() #默認是TCP協(xié)議
server.bind(("127.0.0.1",8089))
server.listen(10) #設(shè)置監(jiān)聽

while True:
	conn,addr = server.accept()
	data = conn.recv(1024).decode("utf-8")
	print(data)

【web框架】——Django——如桃花來

響應(yīng)無效,不等于訪問數(shù)據(jù)失敗。

課程一小時處文章來源地址http://www.zghlxwxcb.cn/news/detail-467213.html

改良版:

import socket

server = socket.socket()  # 默認是TCP協(xié)議
server.bind(('127.0.0.1', 8098))
server.listen(5)

# 把不同的url響應(yīng)的數(shù)據(jù)封裝成函數(shù)
def index(url):
    return bytes(f'我是{url}響應(yīng)的頁面數(shù)據(jù)' , encoding='gbk')

def ac(url):
    return bytes('我好帥', encoding='gbk')

# 可以把url以及對應(yīng)功能函數(shù)用字典進行對應(yīng)關(guān)系
url_dict = {
    '/index/':index,
    '/ac/':ac
}

while True:
    sock, address = server.accept()
    data = sock.recv(1024).decode('utf-8')
    # 瀏覽器發(fā)送的http協(xié)議請求
    print(data)
    url = data.split(' ')[1]
    # 以http協(xié)議發(fā)送響應(yīng)數(shù)據(jù) , 前提就是先發(fā)送一個http協(xié)議
    sock.send(b'HTTP1.1 200 OK \r\n\r\n')
    # 定義一個變量作為程序的標志
    msg = 1
    # 循環(huán)遍歷url對應(yīng)關(guān)系的字典
    for i in url_dict:
        # 判斷獲取到的數(shù)據(jù)是否等于請求的url
        if i == url:
            # 代用url對應(yīng)的功能函數(shù)
            func = url_dict[i](url)
            sock.send(func)
            msg = 0
    # 判斷是否有對應(yīng)url響應(yīng)數(shù)據(jù)
    if msg :
        sock.send('404 not found'.encode('utf-8'))

基于wsgiref實現(xiàn)框架:

  • 在web開發(fā)中程序一般會分為兩個部分
  • 服務(wù)器程序:負責(zé)對socke服務(wù)器進行封裝,處理請求的
  • 應(yīng)用程序:負責(zé)具體的邏輯處理 , 具體做事的。
  • WSGI:是一個規(guī)范化接口,定義了Web服務(wù)器如何與python應(yīng)用程序進行交互。里面把所有的http請求和解析http請求協(xié)議進行包裝。
  • 在python標準庫中 , 提供了WSGI的服務(wù)器模塊 wsgiref , wsgiref里面封裝了socket代碼,Django底層也是使用這個模塊進行socket的操作
from wsgiref.simple_server import make_server

# 把不同的url響應(yīng)的數(shù)據(jù)封裝成函數(shù)
def index(url):
    return bytes(f'我是{url}響應(yīng)的頁面數(shù)據(jù)' , encoding='gbk')

def ac(url):
    return bytes('阿宸好帥', encoding='gbk')

# 可以把url以及對應(yīng)功能函數(shù)用字典進行對應(yīng)關(guān)系
url_dict = {
    '/index/':index,
    '/ac/':ac
}

# 響應(yīng)函數(shù)
def run(environ , response):
    '''
    :param environ: 接收的是請求相關(guān)的所有數(shù)據(jù) , wsgiref模塊將http請求封裝成字典類型的數(shù)據(jù)
    :param response:響應(yīng)數(shù)據(jù) , 是一個函數(shù)
    :return: 返回客戶端的數(shù)據(jù) , 以列表的形式返回
    '''
    # 響應(yīng)數(shù)據(jù) , 傳入響應(yīng)狀態(tài)碼 , 響應(yīng)頭
    response('200 OK' , [])
    # 獲取請求的url
    url = environ['PATH_INFO']
    # 定義一個變量作為程序的標志
    msg = 1
    # 循環(huán)遍歷url對應(yīng)關(guān)系的字典
    for i in url_dict:
        # 判斷獲取到的數(shù)據(jù)是否等于請求的url
        if i == url:
            # 代用url對應(yīng)的功能函數(shù)
            response_data = url_dict[i](url)
            msg = 0
    # 判斷是否有對應(yīng)url響應(yīng)數(shù)據(jù)
    if msg:
        response_data = b'404 not found'
    # 將獲取到的數(shù)據(jù)響應(yīng)到瀏覽器中
    return [response_data]

if __name__ == '__main__':
    # 實例化 , 創(chuàng)建服務(wù)端對象 , 實時監(jiān)聽請求
    client = make_server('127.0.0.1',10086 , run)
    # 啟動服務(wù)端
    client.serve_forever()

靜態(tài)頁面數(shù)據(jù)響應(yīng):

from wsgiref.simple_server import make_server

# 把不同的url響應(yīng)的數(shù)據(jù)封裝成函數(shù)
def index(url):
    # 服務(wù)器響應(yīng)前端頁面
    with open('index.html' , 'r' , encoding='utf-8') as f:
        data = f.read()
    # 講讀取出來的頁面數(shù)據(jù)進行返回給瀏覽器
    return bytes(data.encode('utf-8'))

def ac(url):
    return bytes('阿宸好帥', encoding='gbk')

# 可以把url以及對應(yīng)功能函數(shù)用字典進行對應(yīng)關(guān)系
url_dict = {
    '/index/':index,
    '/ac/':ac
}

# 響應(yīng)函數(shù)
def run(environ , response):
    '''
    :param environ: 接收的是請求相關(guān)的所有數(shù)據(jù) , wsgiref模塊將http請求封裝成字典類型的數(shù)據(jù)
    :param response:響應(yīng)數(shù)據(jù) , 是一個函數(shù)
    :return: 返回客戶端的數(shù)據(jù) , 以列表的形式返回
    '''
    # 響應(yīng)數(shù)據(jù) , 傳入響應(yīng)狀態(tài)碼 , 響應(yīng)頭
    response('200 OK' , [])
    # 獲取請求的url
    url = environ['PATH_INFO']
    # 定義一個變量作為程序的標志
    msg = 1
    # 循環(huán)遍歷url對應(yīng)關(guān)系的字典
    for i in url_dict:
        # 判斷獲取到的數(shù)據(jù)是否等于請求的url
        if i == url:
            # 代用url對應(yīng)的功能函數(shù)
            response_data = url_dict[i](url)
            msg = 0
    # 判斷是否有對應(yīng)url響應(yīng)數(shù)據(jù)
    if msg:
        response_data = b'404 not found'
    # 將獲取到的數(shù)據(jù)響應(yīng)到瀏覽器中
    return [response_data]

if __name__ == '__main__':
    # 實例化 , 創(chuàng)建服務(wù)端對象 , 實時監(jiān)聽請求
    client = make_server('127.0.0.1',10086 , run)
    # 啟動服務(wù)端
    client.serve_forever()

到了這里,關(guān)于【web框架】——Django——如桃花來的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【python】 Django Web框架

    2024年04月16日
    瀏覽(25)
  • 簡要介紹django框架

    Django是一個高級的Python Web框架,它鼓勵快速開發(fā)和干凈、實用的設(shè)計。 Django遵循MVC(模型-視圖-控制器)設(shè)計模式,使得開發(fā)者能夠更輕松地組織代碼和實現(xiàn)功能。以下是Django框架的一些主要組件: 1. 模型(Model) :模型是數(shù)據(jù)的抽象表示,用于定義數(shù)據(jù)結(jié)構(gòu)。在Django中,

    2024年02月05日
    瀏覽(22)
  • Django--基于Python的Web應(yīng)用框架

    Django--基于Python的Web應(yīng)用框架

    基本介紹 Django 是一個由 Python 編寫的一個開放源代碼的 Web 應(yīng)用框架。 使用 Django,只要很少的代碼,Python 的程序開發(fā)人員就可以輕松地完成一個正式網(wǎng)站所需要的大部分內(nèi)容,并進一步開發(fā)出全功能的 Web 服務(wù) Django 本身基于 MVC 模型,即 Model(模型)+ View(視圖)+ Control

    2024年02月05日
    瀏覽(20)
  • python Web框架要點---Django流程詳解

    python Web框架要點---Django流程詳解

    用于搭建Web應(yīng)用程序 免去不同Web應(yīng)用相同代碼部分的重復(fù)編寫,只需關(guān)心Web應(yīng)用核心的業(yè)務(wù)邏輯實現(xiàn) 接收并解析HTTP請求,獲取具體的請求信息 處理本次HTTP請求,即完成本次請求的業(yè)務(wù)邏輯處理 構(gòu)造并返回處理結(jié)果——HTTP響應(yīng) 重點 重點 MVT流程:掌握M,V,T的每個模塊的功能

    2024年02月04日
    瀏覽(20)
  • Django:用于輕松安全 Web 開發(fā)的高級 Python Web 框架

    Django:用于輕松安全 Web 開發(fā)的高級 Python Web 框架

    Django是一種高級 Python Web 框架,近年來在開發(fā)人員中廣受歡迎。Django 專注于簡單性、安全性和可擴展性,使開發(fā)人員可以輕松構(gòu)建和部署強大的 Web 應(yīng)用程序。在這份綜合指南中,我們將仔細研究是什么讓 Django 成為 Web 開發(fā)的絕佳選擇,并詳細探討其主要特性和功能。 1. 安

    2024年02月15日
    瀏覽(26)
  • Python Web開發(fā):Django與Flask框架

    Django和Flask都是Python中非常受歡迎的Web開發(fā)框架。雖然它們都是用于構(gòu)建Web應(yīng)用程序的工具,但它們在設(shè)計理念、使用方式和適用場景等方面存在一些差異。 Django Django是一個“大而全”的框架,遵循MVC設(shè)計模式。它內(nèi)置了很多功能,如ORM(對象關(guān)系映射)、模板引擎、表單處

    2024年02月22日
    瀏覽(20)
  • Python web 框架對比:Flask vs Django

    哈嘍大家好,我是咸魚 今天我們從幾個方面來比較一些現(xiàn)在流行的兩個 python web 框架——Flask 和 Django,突出它們的主要特性、優(yōu)缺點和簡單案例 到最后,大家將更好地了解哪個框架更適合自己的特定需求 參考鏈接:https://djangocentral.com/flask-vs-django-selecting-the-perfect-python-web

    2024年02月11日
    瀏覽(32)
  • Python Web開發(fā)記錄 Day7:Django(Web框架) part 1

    Python Web開發(fā)記錄 Day7:Django(Web框架) part 1

    名人說:莫道桑榆晚,為霞尚滿天?!獎⒂礤a(劉夢得,詩豪) 創(chuàng)作者:Code_流蘇(CSDN) (一個喜歡古詩詞和編程的Coder??) 在當今迅速發(fā)展的互聯(lián)網(wǎng)時代,開發(fā)高效、安全且可擴展的網(wǎng)站變得越來越重要。Python語言因其簡潔的語法和強大的功能而廣受歡迎,而Django則是P

    2024年03月11日
    瀏覽(19)
  • Python Web框架:Django、Flask和FastAPI巔峰對決

    Python Web框架:Django、Flask和FastAPI巔峰對決

    今天,我們將深入探討Python Web框架的三巨頭:Django、Flask和FastAPI。無論你是Python小白還是老司機,本文都會為你解惑,帶你領(lǐng)略這三者的魅力。廢話不多說,讓我們開始這場終極對比! Django,這個強大的全能型框架被譽為“Web開發(fā)的瑞士軍刀”,無愧是大型項目的不二之選

    2024年02月12日
    瀏覽(50)
  • Python 開源 Web 應(yīng)用框架 Django 簡介 應(yīng)用場景 優(yōu)勢 不足

    Django 是一個開放源代碼的 Web 應(yīng)用框架,使用 Python 編程語言編寫。它遵循了 “MTV”(模型-模板-視圖)的設(shè)計模式,旨在幫助開發(fā)者快速構(gòu)建高質(zhì)量、易維護的 Web 應(yīng)用程序。 Web 應(yīng)用開發(fā) :Django 適用于構(gòu)建各種規(guī)模的 Web 應(yīng)用程序,包括企業(yè)級網(wǎng)站、社交網(wǎng)絡(luò)、內(nèi)容管理系

    2024年01月19日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包