wbe请求流程
浏览器---DNS---淘宝服务器处理请求返回HTML页面
根DNS服务器---顶级DNS服务器---权威DNS---二级DNS服务器
请求头:
GET / HTTP/1.1
Host: 127.0.0.1:8080
自定义web框架
第一步: sokect 服务
第二步: uri和函数的对应关系(专业名词路由系统)
第三步: 将html代码和MySQL的数据进行融合(专业名词模板渲染)
uri: 统一资源标识符 是一个用于标识某一互联网资源名称的字符串
Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
DJango简介
使用命令行创建Django服务:
diango-admin startproject mysite(项目名)
python3 manage.py runserver 128.0.0.1:8090
setings.py: 用户自定义的各种配置
urls.py: 路由文件
wsgi.py: 启动socket服务端的文件
mange.py: 管理文件 python mange.py 各种命令
static: js, css, img, 等静态文件的存放位置
Django创建完成以后
配置模板文件路径:
'DIRS':[os.path.join(BASE_DIR,'templates')]
配置静态资源的文件路径:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static')
)
注释中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse, render
def tool(sql,*args):
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password='456', db='db2', charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute(sql)
res = cursor.fetchall()
print(res)
return res
def index(request):
sql = 'select * from userInfo'
userInfo = tool(sql)
return render(request,'index.html',{'userinfo': userInfo})
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
#list 套 dict
sql = 'select * from userInfo'
userInfo = tool(sql)
for user in userInfo:
if (user.get('name') == request.POST.get('username')) and (user.get('pwd') == request.POST.get('password')):
return render(request, 'index.html')
return render(request,'login.html',{'erroinfo': '用户名或密码错误'})
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', index),
url(r'^login/', login),
url(r'^', login),
]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录--BBS</title>
<link rel="stylesheet" href="../static/css/reset.css">
<style>
body{
background-color: #e0e4e8;
}
.main{
position: absolute;
top: 80px;
width: 300px;
left: calc(35%);
border: 1px solid #eeeeee;
box-shadow: 0 0 2px #cccccc;
padding: 40px 60px 0 60px;
background-color: #ffffff;
}
.header h2{
text-align: center;
}
.header a{
display: block;
width: 100px;
height: 100px;
border-radius: 50%;
background-image: url("../static/image/微信图片_20190613085655.png");
margin: 10px auto 30px auto;
}
.middle form input{
width: 300px;
border: 1px solid #ffffff;
box-shadow: 0 0 1px #cccccc;
margin-bottom: 10px;
}
.middle form a{
display: block;
font-size: 12px;
color: cornflowerblue;
padding-left: 240px;
user-select: none;
margin-bottom: 30px;
}
.middle form button{
width: 80px;
background-color: cornflowerblue;
color: white;
border: none;
border-radius: 3px;
margin: 20px 110px 70px ;
}
.erro{
height: 10px;
font-size: 10px;
font-weight: 400;
color: red;
text-align: center;
}
</style>
</head>
<body>
<div class="main">
<div class="header">
<h2>用户登录</h2>
<a></a>
</div>
<div class="middle">
<form action="/login/" method="post">
<input type="text" name="username" placeholder="登录用户名">
<a>忘记用户名</a>
<input type="password" name="password" placeholder="密码">
<a>忘记密码</a>
<h6 class="erro">{{erroinfo}}</h6>
<button type="submit" value="登录">登录</button>
</form>
</div>
</div>
</body>
</html>