django預熱

課堂筆記:html

day60 2018-04-27

1. 今日內容
    1. 歸納
        1. 98%的時間都是在寫例子 幫你理解Django  --> 由咱們寫的例子對比理解Django框架
        2. 安裝Django
    2. 寫例子
        
        
        
        用戶的瀏覽器(socket客戶端)
            3. 客戶端往服務端發消息
            
            6. 客戶端接收消息
            
            7. 關閉
        
        
        
        JD的服務器(socket服務端)
            1. 啓動,監聽
            2. 等待客戶端鏈接
            
            4. 服務端收消息
            5. 服務端回消息
            
            7. 關閉
        
        
        
        FTP做業:
            
            FTP客戶端:  PUT,1024.avi,2048
            
            FTP服務端:  .split("|")
    
        瀏覽器和服務端通訊都要遵循一個HTTP協議(消息的格式要求).
        
        
        關於HTTP協議:
            1. 瀏覽器往服務端發的叫 請求(request)
                請求的消息格式:
                    請求方法 路徑 HTTP/1.1\r\n
                    k1:v1\r\n
                    k2:v2\r\n
                    \r\n
                    請求數據
                
            2. 服務端往瀏覽器發的叫 響應(response)
                響應的消息格式:
                    HTTP/1.1 狀態碼 狀態描述符\r\n
                    k1:v1\r\n
                    k2:v2\r\n
                    \r\n
                    響應正文   <-- html的內容
    
    動態的網頁:
        本質上都是字符串的替換
    字符串替換髮生在什麼地方:
        在服務端替換完再返回給瀏覽器!!!
        
    總結一下:
        1. web框架的本質:
            socket服務端  與 瀏覽器的通訊
        2. socket服務端功能劃分:
            a. 負責與瀏覽器收發消息(socket通訊)  --> wsgiref/uWsgi/gunicorn...
            
            b. 根據用戶訪問不一樣的路徑執行不一樣的函數
            
            c. 從HTML讀取出內容,而且完成字符串的替換  --> jinja2(模板語言)
            
        3. Python中 Web框架的分類:
            
            1. 按上面三個功能劃分:
                1. 框架自帶a,b,c                 --> Tornado
                2. 框架自帶b和c,使用第三方的a    --> Django
                3. 框架自帶b,使用第三方的a和c    --> Flask
            2. 按另外一個維度來劃分:
                1. Django   --> 大而全(你作一個網站能用到的它都有)
                2. 其餘     --> Flask 輕量級
        
        
        
    3. 新建Django項目
        命令行建立:
            django-admin startproject mysite
        pycharm建立:
            1. File --> New project --> 左側選Django --> 右側填項目路徑,而且勾選python.exe
        
    4. 設置Django項目:
        1. settings.py
            1. 配置HTML文件存放的位置
            2. 配置靜態文件存放的位置
    

2. 做業
    1. 用Django框架把咱們以前寫過登陸的頁面返回給瀏覽器
View Code

 

不完善的服務端實例:python

# -*- coding: utf-8 -*-
'''
不完善的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)

    print(data)
    # 給客戶端回覆消息
    conn.send(b'http/1.1 200 OK\r\ncontent-type:text/html; charset=utf-8\r\n\r\n')
    # 想讓瀏覽器再頁面上顯示出來的內容都是響應正文
    conn.send(b'<h1>hello world</h1>')
    # 關閉
    conn.close()
    sk.close()
View Code

瀏覽器輸入 http://127.0.0.1:8001/ web

根據路徑返回不一樣的頁面django

# -*- coding: utf-8 -*-
'''
不完善的web服務端實例
'''

import socket

# 生成socket對象
sk = socket.socket()
# 綁定ip和端口
sk.bind(('127.0.0.1', 8001))
# 監聽
sk.listen()


# 定義處理yimi的函數
def yimi(url):
    with open('haiyan.html', 'rb') as f:
        res = f.read()
        return res


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


# 定義一個處理404的
def f404(url):
    res = '你訪問的地址{}找不到'.format(url)
    return bytes(res, 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')
    print(data_str)
    # 用回車換行來切分紅數組
    l1 = data_str.split('\r\n')
    l2 = l1[0].split()
    url = l2[1]
    print(data)
    # 給客戶端回覆消息
    conn.send(b'http/1.1 200 OK\r\ncontent-type:text/html; charset=utf-8\r\n\r\n')
    # 想讓瀏覽器再頁面上顯示出來的內容都是響應正文
    for i in url_func:
        if i[0] == url:
            func = i[1]
            break
    else:
        func = f404
    response = func(url)
    conn.send(response)
    # 關閉
    conn.close()
View Code

兩個html代碼片斷:第一個名字是  haiyan.html   第二個名字是:xiaohei.html數組

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>海燕</title>
</head>
<body>
<h1>web 框架本質是什麼鬼002啦啦啦</h1>
<p>海燕blablabla</p>
<p>恩,其實這裏已是本質了呢</p>
</body>
</html>
View Code
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>小黑</title>
</head>
<body>
<h1>web 框架本質是什麼鬼002啦啦啦</h1>
<p>這裏是小黑</p>
<p>恩,其實這裏已是本質了呢</p>
</body>
</html>
View Code

 兩個正確的url地址:http://127.0.0.1:8001/xiaohei/  http://127.0.0.1:8001/yimi/瀏覽器

1105 day60 結束 學習了,django項目目錄的分類,
                        頁面都放在templates下,
                        static文件新設置一個目錄,加了配置才能對應起來 
                        BASE_DIR是項目的根目錄
                        urls.py是區分設置根據路徑區分網頁的地方
                        cmd 進入到項目目錄後 python mange.py runserver 8001  默認是8000端口號    的方式來啓動項目
View Code
相關文章
相關標籤/搜索