leiyu567567

web项目大致流程

  • python后端

    • 服务器程序:socket
    • 应用程序:python逻辑代码
  • 前端

    • 移动端:h5 ios
    • pc端:h4 h5
    • 浏览器页面展示
      • html
      • css
      • js ---jquery框架
      • bootstrap框架
  • 数据库

    • mysql

    • MongoDB

    • redis

    • oracle 等

原生socket实现简单的web项目

#server.py
import socket

server = socket.socket()
ip_port = (\'127.0.0.1\',8001)
server.bind(ip_port)
server.listen()
while True:
    conn,add = server.accept()
    client_msg = conn.recv(1024)
    print(\'来自客户端的数据>>>\',client_msg)
    conn.send(b\'HTTP/1.1 200 OK\r\n\r\n\')
    conn.send(b\'<h1>welcome!30 hjdc!</h1>\')#html-标签--超文本标记语言 --经过浏览器解析(html标记语言的解析器) --对应效果

    conn.close()
    
#浏览器输入:http://127.0.0.1:8001/
#页面返回:welcome!30 hjdc!

#pycharm返回:
来自客户端的数据>>> b\'GET / HTTP/1.1\r\nHost: 127.0.0.1:8001\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nsec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"\r\nsec-ch-ua-mobile: ?0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nSec-Fetch-Site: none\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-User: ?1\r\nSec-Fetch-Dest: document\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n\'
来自客户端的数据>>> b\'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:8001\r\nConnection: keep-alive\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nsec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"\r\nsec-ch-ua-mobile: ?0\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\nAccept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8\r\nSec-Fetch-Site: same-origin\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Dest: image\r\nReferer: http://127.0.0.1:8001/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n\'

import socket

server = socket.socket()
ip_port = (\'127.0.0.1\',8001)
server.bind(ip_port)
server.listen()
while True:
    conn,add = server.accept()
    client_msg = conn.recv(1024)
    print(\'来自客户端的数据>>>\',client_msg)
    conn.send(b\'HTTP/1.1 200 OK\r\n\r\n\')
    #conn.send(b\'<h1>welcome!30 hjdc!</h1>\') #html-标签--超文本标记语言 --经过浏览器解析(html标记语言的解析器) --对应效果
    with open(\'test.html\',\'rb\') as f:
        data = f.read()

    \'\'\'
        调用mysql中的数据,给data添加上或者替换上mysql中的数据
    \'\'\'
    conn.send(data)
    conn.close()
#test.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
    <h1>欢迎来到30期皇家赌场</h1>
    请猛烈的点击这里<a href="http://www.baidu.com">有惊喜</a>

<body>

</body>
</html>
  • 应用层 -- http、https相关协议
  • http协议请求
    • 请求 GET / HTTP/1.1 ... 你的消息
    • 响应 HTTP/1.1 200 ok\r\n\r\n\r\hello

html文档结构

head标签

<!DOCTYPE html>       <!--文档声明 H5 html-->
<html lang="en">  #表示语言,zh-CN是中文的意思,就是说,你这个文档的内容以中文为主,如果是以英文为主,就写出en
<head>
    <meta charset="UTF-8">   <!--charset="UTF-8"标签属性  格式:属性名称=\'属性\'规定标签的一些格式,效果等-->
    <title>Title</title>     <!--页面名称-->
</head>
<body>
<h1>xx</h1>           <!--全封闭标签-->
<img src="" alt="">   <!--自封闭标签-->

</body>
</html>


<meta name="keywords" content="30期皇家赌场,皇家赌场,皇家,">  #搜索引擎搜索的关键字
<meta name="description" content="30期皇家渡航xx有好多什么..视频供你看。。游戏。。">  #搜索引擎搜索时的描述内容

<!--2秒后跳转到对应的网址,注意引号-->
<meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com"> #如果把URL和后面的内容去掉,就是2秒钟刷新一次,这些内容了解一下就行
<!--指定文档的编码类型--> 
<meta http-equiv="content-Type" charset=UTF8">
<!--告诉IE以最高级模式渲染文档-->
<meta http-equiv="x-ua-compatible" content="IE=edge"> #edge是微软的一个全新的浏览器,其实就是告诉IE浏览器,你按照最高标准来渲染我的页面,了解一下就可以啦

浏览器内核:

    浏览器    --    内核

    IE           --    trident

    chrome  ---   blink

              火狐       ---   gecko

    Safari     ---   webkit

  PS:「浏览器内核」也就是浏览器所采用的「渲染引擎」,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。渲染引擎是兼容性问题出现的根本原因。

body中的基本标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

加粗
<b>加粗</b>
<i>斜体</i>
<br>   #换行
<u>下划线</u>
<hr>   #加一条横线
<s>删除</s>

<p>段落标签</p>
<h1>标题1</h1>
<h2>标题2</h2>
<h3>标题3</h3>
<h4>标题4</h4>
<h5>标题5</h5>
<h6>标题6</h6>

</body>
</html>

特殊字符

内容	对应代码
空格(html中默认是不显示空格的,也就是说通过空格键加了空格也没有多个空格的效果,加多少个都是显示一个空格效果,需要这些特殊字符才能显示出空格效果)	&nbsp;
>	&gt;
<	&lt;
&	&amp;
¥	&yen;
版权标识(写公司网站的时候会用到)	&copy;
注册(一个圆圈里面有个R)	&reg;

标签分类

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    <style>-->
<!--      div{-->
<!--        background-color: red;-->
<!--      }-->
<!--      span{-->
<!--        color: green;-->
<!--      }-->
    </style>
</head>
<body>
xxx
<span>xx1</span>
<span>xx2</span>
<div>xxdiv</div>
<span>xx3</span>

<!--
  块级标签(行外标签),独占一行:p、h1--h6、hr、div
  内联标签(行内标签),不独占一行:b、i、u、s、span
  嵌套规则:通常块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。div是可以包含div的
    p标签比较特殊,不能包含块级标签,p标签也不能包含p标签。可以试一下p标签套p标签,f12你会发现三个p标签
-->

</body>
</html>


#html--标签   网页股价
#css -- 样式效果
#js --动态效果
  • img标签

    <img src="图片的路径" alt="图片未加载成功时的提示" title="鼠标悬浮时提示信息" width="宽" height="高(宽高两个属性只用一个会自动等比缩放)">
    
  • a标签

    超链接标签
    
        所谓的超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序。
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <!--埋点,两种方式都可以,a标签name属性,其他标签的id属性-->
    <!--<a name="xx">顶部位置</a>-->
    <div id="xx">顶部位置</div>
    <!--src=图片路径,当图片未加载完成,显示alt的内容,-->
    <img src="huluwa.png" alt="这是一个葫芦娃!"title="葫芦娃"width="100"height="100">
    <a href="http://www.baidu.com" target="_blank">百度</a>
    
    <a href="#xx">回到顶部</a>  <!--跳转锚点-->
    
    </body>
    </html>
    

列表

  • 无序列表

    <ul type="disc">
      <li>第一项</li>
      <li>第二项</li>
    </ul>
    
    
     type属性:
    
    disc(实心圆点,默认值)
    circle(空心圆圈)
    square(实心方块)
    none(无样式)
    
  • 有序列表

    <ol type="1" start="2">
      <li>第一项</li>
      <li>第二项</li>
    </ol>
    
    
     type属性: start是从数字几开始
    
    1 数字列表,默认值
    A 大写字母
    a 小写字母
    Ⅰ大写罗马
    ⅰ小写罗马
    
  • 标题列表

    <dl>
      <dt>标题1</dt>
      <dd>内容1</dd>
      <dt>标题2</dt>
      <dd>内容1</dd>
      <dd>内容2</dd>
    </dl>
    

表格标签

表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
    表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
    表格的基本结构:


<table border=\'1\'>
  <thead> #标题部分
  <tr> #一行
    <th>序号</th> #一个单元格
    <th>姓名</th>
    <th>爱好</th>
  </tr>
  </thead>
  <tbody> #内容部分
  <tr> #一行
    <td>1</td> #一个单元格
    <td>Egon</td>
    <td>杠娘</td>
  </tr>
  <tr>
    <td>2</td>
    <td>Yuan</td>
    <td>日天</td>
  </tr>
  </tbody>
</table>

  属性:

border: 表格边框.
cellpadding: 内边距 (内边框和内容的距离)
cellspacing: 外边距.(内外边框的距离)
width: 像素 百分比.(最好通过css来设置长宽)
rowspan: 单元格竖跨多少行
colspan: 单元格横跨多少列(即合并单元格)

input标签

 <input> 元素会根据不同的 type 属性,变化为多种形态。

type属性值	表现形式	对应代码
text	单行输入文本	<input type=text" />
password	密码输入框(不显示明文)	<input type="password"  />
date	日期输入框	<input type="date" />
checkbox	复选框	<input type="checkbox" checked="checked" name=\'x\' />
radio	单选框	<input type="radio" name=\'x\' />
submit	提交按钮	<input type="submit" value="提交" /> #发送浏览器上输入标签中的内容,配合form表单使用,页面会刷新
reset	重置按钮	<input type="reset" value="重置"  />  #页面不会刷新,将所有输入的内容清空
button	普通按钮	<input type="button" value="普通按钮"  />
hidden	隐藏输入框	<input type="hidden"  />
file	文本选择框	<input type="file"  /> (等学了form表单之后再学这个)
   属性说明:

name:表单提交时的“键”,注意和id的区别
value:表单提交时对应项的值
type="button", "reset", "submit"时,为按钮上显示的文本年内容
type="text","password","hidden"时,为输入框的初始值
type="checkbox", "radio", "file",为输入相关联的值
checked:radio和checkbox默认被选中的项
readonly:text和password设置只读
disabled:所有input均适用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
用户名:<input type="text">
<input type="hidden">
密码:<input type="password">
<input type="date">

<br>
爱好:
<input type="checkbox" name="hobby"> 男人
<input type="checkbox" name="hobby"> 女人
<input type="checkbox" name="hobby"> 二椅子

<br>
单选性别:
<input type="radio" name="sex"> 男
<input type="radio" name="sex"> 女
<hr>
<input type="submit" value="确定">
<input type="reset" value="重置">
<input type="button" value="普通按钮">
<hr>
<input type="file">

</body>
</html>

下拉框 select标签

<form action="" method="post">
  <select name="city" id="city">
    <option value="1">北京</option>
    <option selected="selected" value="2">上海</option> #默认选中,当属性和值相同时,可以简写一个selected就行了
    <option value="3">广州</option>
    <option value="4">深圳</option>
  </select>
</form>


 属性说明:

multiple:布尔属性,设置后为多选下拉框,否则默认单选
disabled:禁用
selected:默认选中该项
value:定义提交时的选项值

label标签

定义:<label> 标签为 input 元素定义标注(标记)。如果不用这个label给input标签一个标记,input会变黄,不影响使用,只是提示你,别忘了给用户一些提示,也就是这个label标签。
    说明:

  label 元素不会向用户呈现任何特殊效果。但是点击label标签里面的文本,那么和他关联的input标签就获得了光标,让你输入内容
  <label> 标签的 for 属性值应当与相关元素的 id 属性值相同。
      
<form action="">
  <label for="username">用户名</label>  #for和input的id属性一样,就关联在一起了
  <input type="text" id="username" name="username">
</form>      

textarea多行文本

<textarea name="memo" id="memo" cols="30" rows="10">
  默认内容
</textarea>

属性说明:

name:名称
rows:行数  #相当于文本框高度设置
cols:列数   #相当于文本框长度设置
disabled:禁用
maxlength:显示字符数,例如:maxlength=\'10\'  最多输入十个字符

分类:

技术点:

相关文章:

  • 2021-10-11
  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-07
  • 2021-09-05
  • 2021-12-22
  • 2021-04-12
  • 2022-12-23
相关资源
相似解决方案