Day14
首先了解一下socket与浏览器
1 #Author: Zachary 2 import socket 3 4 def handle_request(client): 5 buf = client.recv(1024) 6 client.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding = "utf-8")) 7 client.send(bytes("Hello, Seven",encoding = "utf-8")) 8 9 def main(): 10 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 11 sock.bind(('localhost', 8000)) 12 sock.listen(5) 13 while True: 14 connection, address = sock.accept() 15 handle_request(connection) 16 connection.close() 17 18 if __name__ == '__main__': 19 main()
运行之后,在浏览器中输入localhost:8000
返回以下页面
HTML入门
编写Html文件
-doctype对应关系
-html标签,标签内部可以写属性 只能有一个html标签
-注释: <!-- 注释的内容 -- >
Head标签
标签分类
-自闭合标签 <meta charset="UTF-8">
-主动闭合标签 <head></head>
刷新和跳转
<meta http-equiv="Refresh" content="3"> <!-- 3秒刷新一次-->
<meta http-equiv="Refresh" content="3;Url=http://www.bilibili.com"> <!--自动跳转-->
关键词和描述
<meta name="keywords" content="***,***,***">
<meta name="description" content="*********">
title标签
link标签 -搞图标
style标签
script标签
body标签
空格
> >
< <
p标签 -段落
<p>***</p>
br标签 -换行
<br> 或者 <br /> 推荐
h1\h2\h3\h4\h5\h6标签
标题,1最大,6最小
span标签
小总结
所有标签分为:
-块级标签:h系列(加大加粗),p标签(段落间有间距),div标签(白板)
-行内标签:span(白板,不带特性)
标签之间可以嵌套
标签存在的意义,css操作,js操作
chrome检查
-定位
-查看样式
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <a href="http://www.baidu.com">百 <>度</a> 9 <p>这是一个p标签</p> 10 <br/> 11 <h1>h1</h1> 12 <h2>h2</h2> 13 <h3>h3</h3> 14 <h4>h4</h4> 15 <h5>h5</h5> 16 <h6>h6</h6> 17 <span>span</span> 18 <span>span</span> 19 <span>span</span> 20 <span>span</span> 21 <div>1</div> 22 <div>2</div> 23 <div>3</div> 24 </body> 25 </html>
form标签 可以通过form标签的action去获取用tornodo框架编写的程序
input标签
来一个实例,这块使用到了tornado
app.py
1 #Author: Zachary 2 import tornado.ioloop 3 import tornado.web 4 5 class MainHandler(tornado.web.RequestHandler): 6 def get(self): 7 print(111) 8 u = self.get_argument("user") 9 p = self.get_argument("pwd") 10 if u == "zach" and p == "123123": 11 self.write("OK") 12 else: 13 self.write("您错了") 14 def post(self,*args,**kwargs): 15 u= self.get_argument("user") 16 p = self.get_argument("pwd") 17 print(u,p) 18 self.write("POST") 19 20 application = tornado.web.Application([ 21 (r"/index", MainHandler), 22 ]) 23 if __name__ == "__main__": 24 application.listen(8888) 25 tornado.ioloop.IOLoop.instance().start()
s3.html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form action="http://localhost:8888/index"> 9 <input type="text" name="user"/> 10 <input type="password" name="pwd"/> 11 <input type="submit" value="登录"/> <!--会提交当前这个表单--> 12 </form> 13 <br /> 14 <form> 15 <input type="text"/> 16 <input type="password"/> 17 <input type="button"/> 18 <input type="button" value="登录1"/> 19 <input type="submit" value="登录2"/> <!--会提交当前这个表单--> 20 </form> 21 </body> 22 </html>
之后运行html输入用户名密码
正确的话
错误的话
但是默认的form中method属性是get,在结果中会在url上体现出用户名密码的提交
如果改成post
提交的时候不会在url上显示出来
并且pycharm的运行结果也会有
input系列
<input type="text" name="user"/>
<input type="password" name="pwd"/>
<input type="button"/>
<input type="button" value="登录1"/>
<input type="submit" value="登录2"/> -会提交当前这个表单
属性:value可以是默认值,按键上的文本
name是类似于别名
<input type="radio" name="***" value="*"/> 单选框,name相同时候只能选择一个,然后内部可以通过value来区分,checked="checked"默认选中
<input type="checkbox" /> 复选框,name相同时,是为了区分别的复选框选项,value可以区分是哪一个,checked="checked"默认选中
<input type="file" name="fname" /> 可以选择文件并上传
但是必须在form表单中有一个属性依赖
<input type="reset" name="重置" /> 可以重置所有选项,不会提交
例子
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form action="https://www.sogou.com/web"> 9 <input type="text" name="query"/> 10 <input type="submit" name="搜索"/> 11 </form> 12 </body> 13 </html>
提交后可以获得
radio&checkbox
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form> 9 <div> 10 <p>请选择性别:</p> 11 男:<input type="radio" name="gender" value="1"/> 12 女:<input type="radio" name="gender" value="2"/> 13 <p>爱好</p> 14 篮球:<input type="checkbox" name="favor" value="1"/> 15 足球:<input type="checkbox" name="favor" value="2"/> 16 排球:<input type="checkbox" name="favor" value="3"/> 17 网球:<input type="checkbox" name="favor" value="4"/> 18 台球:<input type="checkbox" name="favor" value="5" /> 19 <p>技能</p> 20 篮球:<input type="checkbox" name="skill" value="1"/> 21 足球:<input type="checkbox" name="skill" value="2"/> 22 排球:<input type="checkbox" name="skill" value="3"/> 23 </div> 24 <input type="submit" value="提交"/> 25 </form> 26 </body> 27 </html>
提交后