django day 01 web應用簡介 基於socket手寫web服務器 用wsgiref模塊寫一個web navicate使用 jinja2代替字符串的替換

django訪問頁面的整個過程html

用戶在瀏覽器輸入網址,網址發給服務器,url控制器先來接手,經過url匹配一下交給不一樣的視圖來處理,而後視圖去model拿數據,model去數據庫拿數據,python

model拿完數據,把數據給視圖,視圖再把數據給模板(模板就是html頁面),模板最終返回給瀏覽器,也就是頁面。這就是django完整訪問頁面的過程。web

瀏覽器發消息稱之爲請求,服務端回消息稱之爲響應。數據庫

 簡單的web框架django

\r\n表示換行瀏覽器

import socket
sk=socket.socket()
sk.bind(("127.0.0.1",8080))#插上手機卡
#監聽
sk.listen()#等待鏈接

while 1:
    #獲取與客戶端的鏈接
    conn, _=sk.accept()
    #接受客戶端發來消息
    data=conn.recv(8096)
    print(data)
    #給客戶端回覆消息
    conn.send(b'http/1.1 200 OK\r\n\r\n')
    conn.send(b'<h1>hello world</h1>')
    #關閉
    conn.close()
    sk.close()

http協議簡單來講就是收發消息的格式要求   \r的r是return的意思,回到行首服務器

根據不一樣的路徑返回不一樣的內容app

"""
完善的web服務端示例
根據不一樣的路徑返回不一樣的內容
"""

import socket

# 生成socket實例對象
sk = socket.socket()
# 綁定IP和端口
sk.bind(("127.0.0.1", 8001))
# 監聽
sk.listen()

# 寫一個死循環,一直等待客戶端來連我
while 1:
    # 獲取與客戶端的鏈接
    conn, _ = sk.accept()
    # 接收客戶端發來消息
    data = conn.recv(8096)
    # 把收到的數據轉成字符串類型
    data_str = str(data, encoding="utf-8")  # bytes("str", enconding="utf-8")
    # print(data_str)
    # 用\r\n去切割上面的字符串
    l1 = data_str.split("\r\n")
    # print(l1[0])
    # 按照空格切割上面的字符串
    l2 = l1[0].split()
    url = l2[1]
    # 給客戶端回覆消息
    conn.send(b'http/1.1 200 OK\r\ncontent-type:text/html; charset=utf-8\r\n\r\n')
    # 想讓瀏覽器在頁面上顯示出來的內容都是響應正文

    # 根據不一樣的url返回不一樣的內容
    if url == "/yimi/":
        response = b'<h1>hello yimi!</h1>'
    elif url == "/xiaohei/":
        response = b'<h1>hello xiaohei!</h1>'
    else:
        response = b'<h1>404! not found!</h1>'
    conn.send(response)
    # 關閉
    conn.close()
    sk.close()

 

 返回具體的html頁面服務端框架

"""
完善的web服務端示例
函數版根據不一樣的路徑返回不一樣的內容
進階函數版 不寫if判斷了,用url名字去找對應的函數名
返回html頁面
"""

import socket

# 生成socket實例對象
sk = socket.socket()
# 綁定IP和端口
sk.bind(("127.0.0.1", 8001))
# 監聽
sk.listen()

# 定義一個處理/yimi/的函數
def yimi(url):
    with open("yimi.html", "rb") as f:
       ret = f.read()
    return ret


# 定義一個處理/xiaohei/的函數
def xiaohei(url):
    with open("xiaohei.html", "rb") as f:
       ret = f.read()
    return ret


# 定義一個專門用來處理404的函數
def f404(url):
    ret = "你訪問的這個{} 找不到".format(url)
    return bytes(ret, encoding="utf-8")


url_func = [
    ("/yimi/", yimi),
    ("/xiaohei/", xiaohei),
]


# 寫一個死循環,一直等待客戶端來連我
while 1:
    # 獲取與客戶端的鏈接
    conn, _ = sk.accept()
    # 接收客戶端發來消息
    data = conn.recv(8096)
    # 把收到的數據轉成字符串類型
    data_str = str(data, encoding="utf-8")  # bytes("str", enconding="utf-8")
    # print(data_str)
    # 用\r\n去切割上面的字符串
    l1 = data_str.split("\r\n")
    # print(l1[0])
    # 按照空格切割上面的字符串
    l2 = l1[0].split()
    url = l2[1]
    # 給客戶端回覆消息
    conn.send(b'http/1.1 200 OK\r\ncontent-type:text/html; charset=utf-8\r\n\r\n')
    # 想讓瀏覽器在頁面上顯示出來的內容都是響應正文

    # 根據不一樣的url返回不一樣的內容
    # 去url_func裏面找對應關係
    for i in url_func:
        if i[0] == url:
            func = i[1]
            break
    # 找不到對應關係就默認執行f404函數
    else:
        func = f404
    # 拿到函數的執行結果
    response = func(url)
    # 將函數返回的結果發送給瀏覽器
    conn.send(response)
    # 關閉鏈接
    conn.close()

靜態網頁與動態網站的區別socket

靜態網站:數據不變

動態網站:數據會變化

返回動態的html 頁面

 

qt是什麼?

qt能夠很輕鬆的幫你作帶界面的軟件,甚至不須要你投入很大精力。

一.web應用程序是什麼

web應用程序是一種能夠經過web訪問的應用程序,用戶只須要瀏覽器便可不須要其餘軟件。

web應用程序的優勢:

 

web應用程序的缺點:

全部django入口文件都是manage.py開始的

settings配置相關的

urls路徑和函數對應關係的文件

 

pycharm建立django項目
file--------->new project----------->django 路徑E:\python10\day60\mysite
不要用new environment using 用existing interpreter
選這個三角下拉框中 電腦上的python.exe解釋器
而後open in new window 在新的窗口打開不要用當前窗口

全部管理django項目的文件稱之爲manage.py

相關代碼

url文件下的相關代碼

from django.conf.urls import url
from django.contrib import admin
from django.shortcuts  import HttpResponse

def yimi(request):
    #request參數保存了全部用戶和相關瀏覽器的數據
    with open("./templates/yiming.html",'r',encoding='utf-8') as f:
        data=f.read()
    return HttpResponse(data)

def xiaohei(request):
    #request 參數保存了全部用戶瀏覽器請求相關數據
    return HttpResponse('hello xiaohei!haha 小黑你真黑啊')

#保存了路徑和函數的對應關係
urlpatterns = [
    url(r'^yimi/', yimi),
    url(r'^xiaohei/', xiaohei),
]

3. 新建Django項目
命令行建立:
django-admin startproject mysite
pycharm建立:
1. File --> New project --> 左側選Django --> 右側填項目路徑,而且勾選python.exe  app裏面能夠填寫app01

4. 設置Django項目:
1. settings.py
1. 配置HTML文件存放的位置
2. 配置靜態文件存放的位置

 

第七個視頻14分36秒會詳細講解site的關係 

配置 html文件存放的位置

配置靜態文件存放的位置

今日相關知識點

get至關於獲取一個網頁

post至關於給服務端提交數據

相關文章
相關標籤/搜索