首页 > 代码库 > web框架

web框架

1.web框架的本质

在web浏览中, 浏览器相当于客户端, 对web的操作相当于编写服务器
最基本的web服务器代码为
import socket
server=socket.socket()
server.bind((‘127.0.0.1‘,8080))
server.listen(5)

while True:
    conn,addr=server.accept()
    data=http://www.mamicode.com/conn.recv(1024)>

解析HTTP的请求报文

请求头和请求体用\r\n\r\n分割

请求头中的每一行用\r\n分割

 

2.基本框架的改进

(1)限制URL

通过分析请求头,获得请求头的URL,用URL来返回不同的数据

import socket
server=socket.socket()
server.bind((‘127.0.0.1‘,8080))
server.listen(5)

while True:
    conn,addr=server.accept()
    data=http://www.mamicode.com/conn.recv(1024).decode(‘utf8‘)>

(2)将URL封装

import socket
server=socket.socket()
server.bind((‘127.0.0.1‘,8080))
server.listen(5)

def f1():
    conn.send(‘main page‘.encode(‘utf8‘))

def f2():
    conn.send(‘hello world‘.encode(‘utf8‘))

routers=[
    (‘/index‘,f1),
    (‘/hi‘,f2)
]
while True:
    conn,addr=server.accept()
    data=http://www.mamicode.com/conn.recv(1024).decode(‘utf8‘)>

(3)通过读取文件返回HTML页面

def f3():
    with open(‘login.html‘,‘rb‘)as f:
        conn.send(f.read())

routers=[
    (‘/index‘,f1),
    (‘/hi‘,f2),
    (‘/wapper‘,f3)
]

(4)通过替换特殊字符串来动态返回HTML页面

def f4():
    with open(‘login.html‘,‘rb‘)as f:
        data=http://www.mamicode.com/f.read()>

(5)读取数据库的表,获得数据库的数据并显示

(6)使用jinjia2来替换动态内容

 

3.框架的分类

4.Django框架

4.1创建基本Django项目

(1)安装

pip3 install django
   
添加环境变量
一般安装到Python的scripts的文件夹下
将scripts文件夹添加到环境变量
C:\Python36\Scripts\django-admin

创建一个项目

django-admin startproject 项目名

进入该项目目录中

python manage.py runserver IP地址:端口

如果不带上IP地址和端口, 默认是本地地址, 端口为8000

 

4.2用IDE创建Django项目

项目结构相同
│  db.sqlite3
│  manage.py          项目启动管理PY文件

└─项目名
    │  settings.py        项目配置文件
    │  urls.py                路由配置
    │  wsgi.py                
    │  __init__.py
    │
    └─__pycache__
 
(1)配置URL urls.py
urlpatterns = [
    # url(r‘^admin/‘, admin.site.urls),
    url(r‘^login/‘, login),##后面一定要加逗号!!
]

 

(2)配置处理 函数urls.py

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

from django.shortcuts import HttpResponse,render,redirect
def login(request):#处理用户请求 并且返回结果
#至少有一个参数
# request 用户请求相关的所有信息(对象)

    # return HttpResponse(‘login‘)    #HttpResponse里面只能加字符串
# 返回用户所需要的信息
    # return HttpResponse(‘<input>‘)#也可以返回一个标签,或者文件
    if request.method=="GET":
        return render(request,‘login.html‘)
    else:
        print(request.POST)#用户名密码字典都放在POST里面
    #获取
        u=request.POST.get("username")
        p=request.POST.get("password")
        if u=="root" and p=="123123":
            return redirect(‘http://www.oldboyedu.com/‘)##跳转地址
            #登录成功
        else:
            return render(request,‘login.html‘,{‘msg‘:‘用户名或密码错误‘})
            #登录失败
#render默认自动查找模板路径下的login.html文件
#读取内容并返回给用户

 

(3)使用render的模板文件配置settings.py

‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]
 一般地, 模板文件放在templates文件中, 配置这个之后就能找到该文件了
 
(4)配置静态文件目录 settings.py
<link rel="stylesheet" href="http://www.mamicode.com/static/com.css">
 --STATIC_URL = ‘/static/‘
 STATICFILES_DIRS=(
     os.path.join(BASE_DIR,‘sta‘),
 )

 

web框架