前端三把利器:
web访问中,浏览器充当一个socket客户端。
浏览器获取数据:一次请求、一次相应,连接断开。
写一个简单的web socket服务端:
import socket
def handle_request(client):
buf = client.recv(1024)
client.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding='utf-8'))
client.send("">Hello
")
# f = open('index.html', 'r', encoding='utf-8')
# data = f.read() # 文件中读取。
# f.close()
# client.send(data)
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8000))
sock.listen(5)
while True:
connection, address = sock.accept()
handle_request(connection)
connection.close()
if __name__ == '__main__':
main()
服务端返回的数据只是字符串,而浏览器不同样式的显示,只是浏览器可以解释这套规则。HTML就是一套规则,浏览器认识的规则。通python解释器解释py代码一样。
HTML:
学习HTML规则
开发后台程序
- 写html文件(充当模板作用)
- 数据库获取数据,然后替换到html文件中指定位置(web框架)
一般写静态页面时,不用写socket服务端,直接打开浏览器就支持。另外通过Pycharm打开也可以,Pycharm自动帮我们启动一个socket服务端。
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
body>
html>
标签分类:自闭合标签(meta、link)、主动闭合标签
提供有关页面的元信息,例:页面编码、刷新、跳转、针对搜索引擎和更新频度的描述和关键词
< meta http-equiv=“content-type” content=“text/html;charset=utf-8”>
< meta http-equiv=“Refresh” Content=“30″>
< meta http-equiv=”Refresh“ Content=”5; Url=http://www.autohome.com.cn“ />
< meta name="keywords" content="星际2,专访,F91,小色,JOY" >
4、描述
5、X-UA-Compatible
只要是为了支持IE,专为IE设置。
<meta http-equiv="X-UA-Compatible" content="IE=IE9;IE=IE8;" />
head标签里除了meta、title标签,还有link、style、script标签。
LInk标签
< link rel="stylesheet" type="text/css" href="css/common.css" >
< link rel="shortcut icon" href="image/favicon.ico">
上面的内容了解就好,body内的标签比较重要。
# 空格
> # 大于号 >
< # 小于号 <
<p>FFFFFFF<br>FFFFFFFFp> # p标签:一个段落 br标签:换行
# <br> 和 <br /> 效果一样。半闭合标签加上/更明确显示半闭合标签
<h1>FGFh1>
<h2>FGFh2>
<h3>FGFh3>
<h4>FGFh4>
<h5>FGFh5>
<h6>FGFh6>
<span>FGFspan>
<span>FGFspan>
所有的标签可以分为两类:块级标签和内联标签。块级标签带有特性
块级标签占一整行、内联标签内容有多少占多少。
div和span都是白板,div是块级标签、span是内联标签。
标签之间可以嵌套,父子级的关系。
标签存在的意义:便于给内容做操作、动态效果,定位容易。
chrome审查元素的使用
<body>
<form action="http://127.0.0.1:8888/index" method="POST">
<input type="text" name="user" value="默认值" />
<input type="password" name="pwd" />
<input type="button" value="登录" />
<input type="submit" value="提交" />
form>
body>
<body>
<form action="https://www.sogou.com/web">
<input type="text" name="query" />
<input type="submit" value="搜索" />
form>
body>
<form enctype="multipart/form-data">
<div>
<p>请选择性别:p>
男:<input type="radio" name="gender" value="1" checked="checked" />
女:<input type="radio" name="gender" value="2"/>
<p>请选择爱好:p>
篮球:<input type="checkbox" name="favor" value="1" checked="checked" />
足球:<input type="checkbox" name="favor" value="2" />
皮球:<input type="checkbox" name="favor" value="3" />
<p>技能:p>
撩妹:<input type="checkbox" name="skill" value="1" checked="checked" />
代码:<input type="checkbox" name="skill" value="2" />
<p>上传文件:p>
<input type="file" name="fname"/>
div>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
form>
多行文本textarea和下拉框select 以及上面的input 三个标签都可以数据提交到后台。
<textarea name="meno" >默认值textarea>
<select name="city" size="2" multiple="multiple">
<option value="1">北京option>
<option value="2" selected="selected">上海option>
<option value="3">广州option>
<option value="4">深圳option>
select>
<select>
<optgroup label="北京市">
<option>昌平区option>
<option>朝阳区option>
optgroup>
<optgroup label="山东省">
<option>济南市option>
optgroup>
select>
a标签:
<a href="http://blog.csdn.net/fgf00" target="_blank">博客地址a>
<a href="#i1">第一章a>
<a href="#i2">第二章a>
<div id="i1" style="height:600px;">第一章的内容……div>
<div id="i2" style="height:600px;">第二章的内容……div>
图片img和列表ul、ol、dl
<a href="http://blog.csdn.net/fgf00">
<img src="1.jpg" title="美女" style="height:360px;width:274px;" alt="美女">
a>
<ul>
<li>无序li>
<li>无序li>
ul>
<ol>
<li>有序li>
<li>有序li>
ol>
<dl>
<dt>标题dt>
<dd>内容dd>
<dd>内容dd>
<dt>标题dt>
<dd>内容dd>
<dd>内容dd>
dl>
表格,合并单元格
<table border="1">
<thead>
<tr>
<th>表头1th>
<th>表头2th>
<th>表头3th>
<th>表头4th>
tr>
thead>
<tbody>
<tr>
<td>1td>
<td colspan="3">1td>
tr>
<tr>
<td rowspan="2">1td>
<td>1td>
<td>1td>
<td>1td>
tr>
<tr>
<td>1td>
<td>1td>
<td>1td>
tr>
<tr>
<td>1td>
<td>1td>
<td>1td>
<td>1td>
tr>
tbody>
table>
fieldset 边框,边框上可以有文字。
<fieldset>
<legend>登录legend>
<label for="username">用户名:label>
<input id="username" type="text" name="user" />
<p>p>
<label for="pwd">密 码:label>
<input id="pwd" type="password" name="user" />
fieldset>
转载请务必保留此出处:http://blog.csdn.net/fgf00/article/details/53164606
HTML
1、一套规则,浏览器认识的规则。
2、开发者:
学习Html规则
开发后台程序:
- 写Html文件(充当模板的作用) ******
- 数据库获取数据,然后替换到html文件的指定位置(Web框架)
3、本地测试
- 找到文件路径,直接浏览器打开
- pycharm打开测试
4、编写Html文件
- doctype对应关系
- html标签,标签内部可以写属性 ====> 只能有一个
- 注释:
5、标签分类
- 自闭合标签
<meta charset="UTF-8">
- 主动闭合标签
title>title>
6、
head标签中
- <meta -> 编码,跳转,刷新,关键字,描述,IE兼容
<meta http-equiv="X-UA-Compatible" content="IE=IE9;IE=IE8;" />
- title标签
- <link /> 图标,
- <style />
- <script>
7、body标签
- 图标, > <
- p标签,段落
- br,换行
======== 小总结 =====
所有标签分为:
块级标签: div(白板),H系列(加大加粗),p标签(段落和段落之间有间距)
行内标签: span(白板)
标签之间可以嵌套
标签存在的意义,css操作,js操作
ps:chorme审查元素的使用
- 定位
- 查看样式
- h系列
- div
- span
- input系列 + form标签
input type='text' - name属性,value="赵凡"
input type='password' - name属性,value="赵凡"
input type='submit' - value='提交' 提交按钮,表单
input type='button' - value='登录' 按钮
input type='radio' - 单选框 value,checked="checked",name属性(name相同则互斥)
input type='checkbox' - 复选框 value, checked="checked",name属性(批量获取数据)
input type='file' - 依赖form表单的一个属性 enctype="multipart/form-data"
input type='rest' - 重置
<textarea >默认值textarea> - name属性
select标签 - name,内部option value, 提交到后台,size,multiple
- a标签
- 跳转
- 锚 href='#某个标签的ID' 标签的ID不允许重复
- img
src
alt
title
- 列表
ul
li
ol
li
dl
dt
dd
- 表格
table
thead
tr
th
tbody
tr
td
colspan = ''
rowspan = ''
- label
用于点击文件,使得关联的标签获取光标
<label for="username">用户名:label>
<input id="username" type="text" name="user" />
- fieldset
legend
- 20个标签