访问网站
import socket
def main():
sk = socket.socket()
sk.bind(('localhost',8080))#注意这样的话,下次会OSError: [Errno 48] Address already in use# 重复使用绑定的信息serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1)加上这句就是允许重复绑定
sk.listen(5)
while True:
conn ,addr = sk.accept()
buf = conn.recv(1024)
print(buf.decode('utf8'))
conn.sendall(bytes('HTTP/1.1 201 OK \r\n\r\n','utf8'))#这一行代码,有的浏览器中可以省略
conn.sendall(bytes('<h1>Hello World</h1>','utf8'))
conn.close()
if __name__=='__main__':
main()
GET / HTTP/1.1
Host: 127.0.0.1:8080
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Upgrade-Insecure-Requests: 1
Cookie: _ga=GA1.1.828572929.1486389854; csrftoken=shPXza7fFy2SOmmCeueKSWzRQuLYxAZdBbhNpYhBGUWsxewCE8sNdUFoHr2KPaVJ
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Connection: keep-alive
GET /favicon.ico HTTP/1.1
Host: 127.0.0.1:8080
Accept: */*
Connection: keep-alive
Cookie: _ga=GA1.1.828572929.1486389854; csrftoken=shPXza7fFy2SOmmCeueKSWzRQuLYxAZdBbhNpYhBGUWsxewCE8sNdUFoHr2KPaVJ
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8
Accept-Language: zh-cn
Referer: http://127.0.0.1:8080/
Accept-Encoding: gzip, deflate
:显示一条横线
graph TD
A(根元素)-->B(head元素)
A-->C[body元素]
B-->D[meta]
B-->E[title元素]
C-->F[div元素]
C-->G[p元素]
C-->H[div元素]
- 如果属性名和属性值相同的话,可以省略属性名
<input readonly>
head标签
<!DOCTYPE html>
告诉浏览器按照最新的解析模式来解析。
<script>
alert(window.top.document.compatMode)
#获取浏览器的解析模式
#默认是BackCompat,怪异模式,浏览器使用自己的怪异模式解析渲染页面
#加上<!DOCTYPE html>之后CSS1Compat,标准模式,浏览器使用W3C的标准解析渲染页面
</script>
<meta name="description" content="简书是一个优质的创作社区,在这里,你可以任性地创作,一篇短文、一张照片、一首诗、一幅画……我们相信,每个人都是生活中的艺术家,有着无穷的创造力。">
<meta name="keywords" content="简书,简书官网,图文编辑软件,简书下载,图文创作,创作软件,原创社区,小说,散文,写作,阅读">
<meta http-equiv="Refresh" content="2;URL=https://www.baidu.com"><--2秒后自动跳转到百度-->
<link rel='icon' href="//www.jd.com/favicon.ico">
<p></p>换行+隔行,p是块级标签,单想换行的话,使用
<div></div>是块级(block)标签,独占一行
内联(in-line)标签:行内的,该占多大占多大<span></span>
这三个都是内联标签
<b>给字体加粗</b>
<em>变成斜体</em>
<strike></strike>被<del></del>替代
22下角标
2<su>2上角标
空格
 
©代表版权©️符号
< >表示<>
- <img>是内联标签
<img src="1.jpg" width="200px" height="200px" alt="hehe" title="图片">
alt:没有图片的时候图片上显示的文字
title:鼠标悬浮在图片上的时候显示的文字
- <a></a>超链接标签
第一个功能:添加一个文字"百度"并给这个文字添加一个跳转到百度的链接
<a href="http://www.baidu.com">百度</a>
<a href="http://www.baidu.com" target="_blank" title="title">百度</a>
target为"_black"的时候,在新的页面显示链接的网页
title:表示鼠标悬浮的时候显示的文本内容
第二个功能:添加锚点
<style>
#div1{<--#表示,找的是id为div1的-->
hegiht = 500px;
}
</style>
<body>
<a href="#div1">第一章</a>
<a href="#div2">第二章</a>
<a href="#div3">第三章</a>
<div id="div1">第一章</div>
<div id="div2">第二章</div>
<div id="div3">第三章</div>
</body>
- 列表标签unordered list(无序列表) <ul></ul>
<ul>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
</ul>
有序列表<ol></ol>
<ol>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
</ol>
<dl>
<dt>第一章</dt>
<dd>第一节</dd>
<dt>第二章</dt>
<dd>第一节</dd>
<dt>第三章</dt>
<dd>第一节</dd>
<dd>第二节</dd>
<dt>第四章</dt>
<dd>第一节</dd>
</dl>
- form标签
- form的重要属性
- method:get/post
- action:提交到的url
- enctype="multipart/form-data"
- form的重要属性
<form method>
<--name属性是给服务器看的-->
<p>姓名:<input type="text" name="username"></p>
<p>密码:<input type="password" name="password"></p>
<p><input type="submit" value='提交'></p>
<p><input type="reset"></p><--重置-->
<p>复选1<input type="checkbox" name="hobby" value="复选1"></p><--复选框-->
<p>复选2<input type="checkbox" name="hobby" value="复选2"></p><--复选框-->
<p>男<input type="radio" name="sex" value="0"></p><--单选框-->
<p>女<input type="radio" name="sex" value="1"></p><--单选框 name属性的值应该是一样的-->
<p><input type="file"></p><--选择文件-->
<select name="city" multiple>
<optgroup label="安徽省">
<option value="北京">北京</option>
<option value="上海">上海</option>
</optgroup>
<optgroup label="河南省">
<option value="广州">广州</option>
<option value="深圳">广州</option>
</optgroup>
</select>
<form>
- select 标签
- multiple 这个属性,允许多选(按住ctrl)
- size:表示最多显示几个
POST: <QueryDict: {'mudy': [''], 'city': ['上海', '广州', '深圳']}>
django中接收一个文件:
for item in req.FILES:
obj = req.FILES.get(item)
filename = obj.name
f = open(filename,'wb')
for line in obj.chunks():
f.write(line)
f.close()
<textarea rows="10" cols="10">自我简介</textarea>
label将'名字'与input关联起来,点名字两个字的时候,就响应输入框
<label for="mudy">名字</label>
<input id="mudy" type="text">
网友评论