最近在学武沛齐老师的Django开发项目,学习之余整理了笔记,有兴趣的同学可以跟着此笔记来同步辅助学习。
另附上课程链接:00 课程介绍_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1rT4y1v7uQ?p=1&vd_source=95365bd1c5a79f54e63e9e08f3d6ce1b
一.HTML
| 目的:开发一个平台(网站) |
| -前端开发︰HTML、css、Javascript |
| -web框架:接收请求并处理 |
| -MysQL数据库:存储数据地方 |
| |
| 快速上手: |
| 基于Flask web框架让你快速搭建一个网站出来。 |
| |
| 深入学习: |
| 基于Django框架(主要) |
复制
1.快速开发网站
复制
| |
| from flask import Flask |
| |
| app = Flask(__name__) |
| |
| |
| |
| @app.route('/show/info') |
| def index(): |
| return'中国移动' |
| |
| if __name__=='__main__': |
| app.run() |
复制
运行结果:


但是这个网页多于单一化,我们可以继续完善它
浏览器可以识别很多标签+数据,例如
| <h1>中国</h1>浏览器看见加大加粗 |
| |
| <span style='color:red; ' >联通</span> ->浏览器看见字体变红色 |
| |
| 如果我们能把浏览器能识别的所有的标签都学会,我们在网站就可以控制页面到底长什么样子。 |
复制
Flask框架为了让咱们写标签方便,支持将字符串写入到文件里
(1).增加了render_template,用来访问文件
| |
| from flask import Flask,render_template |
| |
| app = Flask(__name__) |
| |
| |
| |
| @app.route('/show/info') |
| def index(): |
| return render_template('index.html') |
| |
| if __name__=='__main__': |
| app.run() |
复制
(2).创建templates目录,新建index.html

| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Title</title> |
| </head> |
| <body> |
| <h1>中国电信</h1> |
| <h2>中国移动</h2> |
| <h3>中国联通</h3> |
| |
| </body> |
| </html> |
复制
运行结果:

2.浏览器能识别的标签
2.1编码(head中)
复制
2.2title(head中)
复制

2.3标题<h></h>
| <h1>1级标题</h1> |
| <h2>2级标题</h2> |
| <h3>3级标题</h3> |
| <h4>4级标题</h4> |
| <h5>5级标题</h5> |
| <h6>6级标题</h6> |
复制
2.4div和span
1.div:占一整行。【块级标签】
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>移动运营商</title> |
| </head> |
| <body> |
| <div>有什么好玩的网游</div> |
| <div>穿越火线永远滴神</div> |
| </body> |
| </html> |
复制

2.span:自己多大占多少行。【行内标签,内联标签】
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>移动运营商</title> |
| </head> |
| <body> |
| <span>111</span> |
| <span>222</span> |
| </body> |
| </html> |
复制

注意:这两个标签比较素+CSS样式,可以实现丰富的功能
2.5超链接 <a></a>
1.跳转到其他网站
| <a href="https://new.qq.com/rain/a/20240403A00FXA00">NBA新闻</a> |
复制
2.跳转到自己的网站
| <a href="/get/news">CBA新闻</a> |
复制
3.target="_blank新建一个页面跳转
| # 当前页面跳转 |
| <a href="/get/news">CBA新闻</a> |
| |
| # 跳转到新建页面 |
| <a href="/get/news" target="_blank">CBA新闻</a> |
复制
此时需要修改web.py内容,然后在同目录下新建一个news.html
| |
| from flask import Flask,render_template |
| |
| app = Flask(__name__) |
| |
| |
| |
| @app.route('/show/info') |
| def index(): |
| return render_template('index.html') |
| |
| @app.route('/get/news') |
| def news(): |
| return render_template('news.html') |
| |
| if __name__=='__main__': |
| app.run() |
复制
2.6图片<img />
复制
| <h1>直接显示别人的图片(防盗链)</h1> |
| <img src="https://ts1.cn.mm.bing.net/th/id/R-C.7ecdb52cb56c0e121025e1b752296fb3?rik=tTsFgweG5QNWIQ&riu=http://pic.bizhi360.com/bbpic/27/9727_7.jpg&ehk=fzaYq+rx5WqWQ2zu7P3Mqgnmwiq4Nx/bDftpz3vaf7w=&risl=&pid=ImgRaw&r=0"/> |
复制
| 显示自己的图片需要在同目录下新建static,然后在static中放入图片即可 |
| <h1>显示自己的图片小米su7</h1> |
| <img src="/static/su7.jpg" /> |
复制

| <h1>关于设置图片的宽度和高度</h1> |
| <img src="/static/su7.jpg" style="height:500px;width:500px" /> # 设置高度和宽度为500像素 |
| <img src="/static/su7.jpg" style="width:30%" /> # 设置图片大小为原来的30% |
复制
小结:
块级标签:
<h1></h1>
<div></div>
行内标签:
<span></span>
<a></a>
<img />
嵌套(超链接和图片进行嵌套)
标签嵌套的意义:
<a>中嵌套<img />,可以方便用户点击图片即可跳转购买链接
| <h1>商品列表</h1> |
| <a href="https://detail.tmall.com/item.htm?id=652790330927&spm=a21bo.jianhua/a.201876.76.5af92a89V47Tnw&scm=1007.40986.369799.0&pvid=693d5507-fd21-4ee3-84c9-efe74dfa52e7"> |
| <img src="/static/音响.jpg" /> |
| </a> |
复制

2.7列表
| 无序列表格式 |
| <ul> |
| <li></li> |
| <li></li> |
| <li></li> |
| <li></li> |
| <li></li> |
| </ul> |
复制
| 有序列表格式 |
| <ol> |
| <li></li> |
| <li></li> |
| <li></li> |
| <li></li> |
| <li></li> |
| </ol> |
复制
2.8表格
| 表格格式 |
| <table> |
| <thead> |
| <tr> |
| <th></th> |
| <th></th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| <tr> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| </tbody> |
| </table> |
复制
案列:用户列表
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>user</title> |
| </head> |
| <body> |
| <h1>用户列表</h1> |
| <table border="1"> |
| <thead> |
| <tr> |
| <th>ID</th> |
| <th>头像</th> |
| <th>name</th> |
| <th>email</th> |
| <th>更多信息</th> |
| <th>操作</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>1</td> |
| <td> |
| <img src="/static/音响.jpg" style="width:20%" /> |
| </td> |
| <td>ty</td> |
| <td>666@qq.com</td> |
| <td> |
| <a href="https://blog.csdn.net/weixin_61218382?spm=1000.2115.3001.5343" target="_blank"> |
| 点击查看详情 |
| </a> |
| </td> |
| <td> |
| 编辑 |
| 删除 |
| </td> |
| </tr> |
| <tr> |
| <td>1</td> |
| <td> |
| <img src="/static/音响.jpg" style="width:20%" /> |
| </td> |
| <td>ty</td> |
| <td>666@qq.com</td> |
| <td> |
| <a href="https://blog.csdn.net/weixin_61218382?spm=1000.2115.3001.5343" target="_blank"> |
| 点击查看详情 |
| </a> |
| </td> |
| <td> |
| 编辑 |
| 删除 |
| </td> |
| </tr> |
| <tr> |
| <td>1</td> |
| <td> |
| <img src="/static/音响.jpg" style="width:20%" /> |
| </td> |
| <td>ty</td> |
| <td>666@qq.com</td> |
| <td> |
| <a href="https://blog.csdn.net/weixin_61218382?spm=1000.2115.3001.5343" target="_blank"> |
| 点击查看详情 |
| </a> |
| </td> |
| <td> |
| 编辑 |
| 删除 |
| </td> |
| </tr> |
| <tr> |
| <td>1</td> |
| <td> |
| <img src="/static/音响.jpg" style="width:20%" /> |
| </td> |
| <td>ty</td> |
| <td>666@qq.com</td> |
| <td> |
| <a href="https://blog.csdn.net/weixin_61218382?spm=1000.2115.3001.5343" target="_blank"> |
| 点击查看详情 |
| </a> |
| </td> |
| <td> |
| 编辑 |
| 删除 |
| </td> |
| </tr> |
| <tr> |
| <td>1</td> |
| <td> |
| <img src="/static/音响.jpg" style="width:20%" /> |
| </td> |
| <td>ty</td> |
| <td>666@qq.com</td> |
| <td> |
| <a href="https://blog.csdn.net/weixin_61218382?spm=1000.2115.3001.5343" target="_blank"> |
| 点击查看详情 |
| </a> |
| </td> |
| <td> |
| 编辑 |
| 删除 |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </body> |
| </html> |
复制

2.9input系列
| <h1>输出框</h1> |
| <input type="text"> |
| <input type="password"> |
| <input type="file"> |
| |
| <h1>单选框</h1> |
| <input type="radio" name="n1">man |
| <input type="radio" name="n1">women |
| |
| <h1>多选框</h1> |
| <input type="checkbox">1 |
| <input type="checkbox">2 |
| <input type="checkbox">3 |
| <input type="checkbox">4 |
| |
| <h1>按钮</h1> |
| <input type="button" value="提交"> # 普通按钮 |
| <input type="submit" value="提交"> # 提交表单 |
复制

2.10 下拉框
| <h1>下拉框</h1> |
| <select> |
| <option>北京</option> |
| <option>上海</option> |
| <option>广州</option> |
| <option>深圳</option> |
| </select> |
| |
| <h1>多选下拉框</h1> |
| <select multiple> |
| <option>北京</option> |
| <option>上海</option> |
| <option>广州</option> |
| <option>深圳</option> |
| </select> |
复制

2.11多行文本
| <h1>多行文本</h1> |
| <textarea></textarea> |
复制

案例:用户注册1
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>注册</title> |
| </head> |
| <body> |
| <h1>用户注册</h1> |
| <div> |
| 账号:<input type="text"> |
| </div> |
| <div> |
| 密码:<input type="password"> |
| </div> |
| <div> |
| 性别: |
| <input type="radio" name="n1">男 |
| <input type="radio" name="n1">女 |
| </div> |
| <div> |
| 爱好: |
| <input type="checkbox">篮球 |
| <input type="checkbox">游泳 |
| <input type="checkbox">羽毛球 |
| <input type="checkbox">乒乓球 |
| </div> |
| <div> |
| 城市: |
| <select> |
| <option>上海</option> |
| <option>北京</option> |
| <option>广州</option> |
| <option>深圳</option> |
| </select> |
| </div> |
| <div> |
| 擅长领域: |
| <select multiple> |
| <option>打游戏</option> |
| <option>睡觉</option> |
| <option>吃饭</option> |
| <option>泡妞</option> |
| </select> |
| </div> |
| <div> |
| 备注: |
| <textarea></textarea> |
| </div> |
| <div> |
| <input type="button" value="button按钮提交"> |
| <input type="submit" value="submit按钮提交"> |
| </div> |
| </body> |
| </html> |
复制

知识点回顾和补充
1.网站请求的流程

2.一大堆的标签
| h/div/span/a/img/ul/li/table/input/textarea/select |
复制
3.网络请求
| 在浏览器的URL中写入地址,点击回车,访问。 |
| 浏览器会发送数据过去,本质上发送的是字符串: |
| "GET/explore http1.1\rlnhost:. . .\r\nuser-agentlr\n..lr\n\r\n" |
| 浏览器会发送数据过去,本质上发送的是字符串: |
| "PosT /explore http1.1\rlnhost:...\r\nuser-agentlr\n..lr\nlr\n数据库" |
| |
| 浏览器向后端发送请求时 |
| |
| GET请求【url方法,表单提交】 |
| 现象:GET请求、跳转、向后台传入数据数据会拼接在URL上。 |
| https : / / www.sogou.com/web?query=安卓&age=19&name=xX |
| 注意:GET请求数据会在URL中体现。 |
| |
| POST请求【表单提交】 |
| 现象:提交数据不在URL中而是在请求体中。 |
复制
| 页面上的数据,想要提交到后台: |
| form标签包裹要提交的数据的标签。 |
| |
| 提交方式:method="get" |
| 提交的地址:action="/ xxx/ xxx/xx" |
| |
| 在form标签里面必须有一个submit标签。 |
| |
| 在form里面的一些标签: input/select/textarea |
| 一定要写name属性<input type="text " name="uu" /> |
复制
案例:用户注册2
创建新代码

创建Flask代码
| from flask import Flask,render_template,request |
| |
| app=Flask(__name__) |
| |
| @app.route('/register',methods=['GET']) |
| def register(): |
| return render_template('register.html') |
| |
| @app.route('/post/reg',methods=['POST']) |
| def post_register(): |
| user = request.form.get("user") |
| pwd = request.form.get("pwd") |
| gender = request.form.get("gender") |
| hobby_list = request.form.getlist("hobby") |
| city = request.form.get("city") |
| skill_list = request.form.getlist("skill") |
| more = request.form.get("more") |
| print(user, pwd, gender, hobby_list, city, skill_list, more) |
| |
| |
| |
| return "注册成功" |
| |
| |
| |
| if __name__ == '__main__': |
| app.run() |
复制
创建html代码
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Title</title> |
| </head> |
| <body> |
| <h1>用户注册</h1> |
| <form method="post" action="/post/reg"> |
| <div> |
| 账号:<input type="text" name="user"/> |
| </div> |
| <div> |
| 密码:<input type="password" name="pwd"/> |
| </div> |
| <div> |
| 性别: |
| <input type="radio" name="gender" value="1">男 |
| <input type="radio" name="gender" value="2">女 |
| </div> |
| <div> |
| 爱好: |
| <input type="checkbox" name="hobby" value="11">吃 |
| <input type="checkbox" name="hobby" value="12">喝 |
| <input type="checkbox" name="hobby" value="13">玩 |
| <input type="checkbox" name="hobby" value="14">乐 |
| </div> |
| <div> |
| 城市: |
| <select name="city"> |
| <option value="bj">北京</option> |
| <option value="sh">上海</option> |
| <option value="sz">深圳</option> |
| </select> |
| </div> |
| <div> |
| 擅长领域: |
| <select name="skill" multiple> |
| <option value="100">游戏</option> |
| <option value="101">体育</option> |
| <option value="102">泡妞</option> |
| </select> |
| </div> |
| <div> |
| 备注:<textarea name="more"></textarea> |
| </div> |
| <input type="submit" value="submit按钮"> |
| |
| </form> |
| </body> |
| </html> |
复制


