pycharm+python+bootstrap写一个登陆界面_Python--day56(前后台数据交互、bootstrap)

1. 前后台数据交互

1.1 socket搭建后台

【注意点】:

1. 前台发送的数据是用\r\n进行换行

2. 路由:请求的路径,获得路由的途径是通过后台对前台发送的数据进行拆分(split)得到,一般路径在前台发送的数据的信息头的1号位

3. 后台响应信息时,不仅需要发送响应的数据给前台,还要再次之前想浏览器发送响应头信息

#用socket建立一个服务器

importsocket

server=socket.socket()

server.bind(('localhost', 8801))

server.listen(5)print('浏览器访问:http://localhost:8801')whileTrue:

client, _,=server.accept()

data= client.recv(1024)#print(data) # 用\r\n作为换行

#print(data.decode('utf-8'))

request_data = data.decode('utf-8') #type: str

#拿到请求的路径(路由)

header = request_data.split('\r\n')[0]

router= header.split(' ')[1]print('前台请求路径:', router)#响应时,不仅需要发送响应数据,还要高旭浏览器响应头的信息

client.send(b'HTTP1.1 200 OK\r\nContent-Type: text/html;charset=utf8\r\n\r\n')#client.send('

后台页面

'.encode('utf-8'))

if router == '/index':

with open('要返回给前台的页面.html', 'rb') as rf:

client.send(rf.read())else:

client.send(b'

404

')

client.close()

socket搭建后台

1.2 flask搭建后台(ajax获取前台数据)

原生socket搭建后台时候,需要我们自己对前台发送的数据进行切分,这样比较麻烦。

于是,可以通过ajax获取前台的数据发送个给后台。这样不需要进行拆分就可以直接获

得我们所需要的信息。

1.2.1  ajax获取前台数据

http协议:前台发送请求给后台(请求方式、请求路径、请求内容),后台返回响应给前台(页面、数据)

ajax完成的是页面中的局部数据请求,不会页面改变

环境:

# pip3 install flask

# pip3 install -i https://pypi.douban.com/simple flask

# pip3 install -i https://pypi.douban.com/simple flask-cors

【注意点】:

1. 固定使用方式:$.ajax() ,前台发送请求给后台(可以携带数据),拿到后台响应的数据

2. 携带是数据以字典的形式发送:{

url: 请求的后台地址:接口,

type: 请求的方式 get post,

data: 要提交给后台的数据,

success: 后台成功的响应,

error: 后台错误的响应

...

}

请求

ajax请求

请求

user=$('#username').val();

pwd=$('#password').val();if(user&&pwd) {

$.ajax({

url:'http://localhost:8888/get_data',

type:'post',

data: {

username: user,

password: pwd

},

success:function(response) {

console.log(response)

},

error:function(error) {

console.log(error)

}

})

}

});

ajax请求响应

1.2.2 flask搭建后台

【注意点】:

1. 需要解决跨域问题,因为前台可能是pycharm打开的,后台是flask打开,他们不是来自 同源,非同源的数据会影响浏览器的功能,所以要解决跨域问题。

2. flask处理路由时候,一个响应对应一个路由

from flask importFlask, request#解决跨域问题,因为前台是pycharm开启的,后台是flask开启

from flask_cors importCORS

app= Flask(__name__)

CORS(app, supports_credentials=True)#flask处理路由:一个响应对应一个路径

@app.route('/')

@app.route('/index')defhome():return '

Home Page

'

#@app.route('/favicon.ico')#def icon():#return

@app.route('/get_data', methods=['GET]', 'POST'])defget_data():print(request.method)if request.method == 'GET':

username= request.args['username']

password= request.args['password']print(username, password)if request.method == 'POST':

username= request.form['username']

password= request.form['password']if username == 'wangyong' and password == "123":return 'login success'

return 'login failed'

if __name__ == '__main__':

app.run(host='localhost', port='8888')

flask搭建后台

2. bootstrap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值