当前位置: 首页 > news >正文

个人网站建设教程分栏式的网站有哪些

个人网站建设教程,分栏式的网站有哪些,wordpress安装多个,怎么建设自己收费网站目录 Flask 1、起步 2、渲染项目的首页 3、处理无参数的 GET 请求 4、处理有 query 参数的 GET 请求 6、处理 params 参数的 get 请求 6、处理 application/json 类型请求体的 POST 请求 7、根据参数渲染模板页面 8、上传文件 数据库操作#xff08;mysql#xff0…目录 Flask 1、起步 2、渲染项目的首页 3、处理无参数的 GET 请求 4、处理有 query 参数的 GET 请求 6、处理 params 参数的 get 请求  6、处理 application/json 类型请求体的 POST 请求 7、根据参数渲染模板页面 8、上传文件 数据库操作mysql Flask 1、起步 先创建一个项目的文件夹然后在该文件夹下初始化一个虚拟环境。虚拟环境建设好后文件夹下将有一个 venv 的目录。 # python 3版本 创建虚拟环境 py -3 -m venv venv# 激活虚拟环境 venv\Scripts\activate# 安装 flask pip install flask 依次创建 flaskr、flaskr/static、flaskr/templates、tests目录 flaskr目录包含应用代码和文件的 Python 包 /static存放静态文件如图片等 /templates可以用来存放 html 文件用于服务端渲染 test 目录用来存放测试类型的文件 2、渲染项目的首页 from flask import Flask from flask import render_template from flask_cors import CORS# 创建该类的实例 app Flask(__name__) CORS(app, resources{r/*: {origins :*}}) # 同源策略解决方法# 使用装饰器设定匹配的URL如果命中则执行下面的函数默认是 get 请求 app.route(/) def default_page():# 返回指定的页面是项目下 templates 下的文件return render_template(index.html)if __name__ __main__:# 运行该服务监听的端口为 9090host‘0.0.0.0’表示接受公开访问app.run(port9090, host0.0.0.0) # templates/index.js!DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlestyleh1{ color: brown; }/style /head bodyh1Hello, welcome to the first page./h1 /body /html 3、处理无参数的 GET 请求 改造 index.html 文件让请求和结果展示在当前界面完成 # templates/index.jsbodyh1Hello, welcome to the first page./h1ullibutton onclickget_request(get_datetime, .datetime)click to get datetime/buttonp classdatetime/p/li/ul scriptfunction get_request(path, renderElement, query, callback){const xhr new XMLHttpRequest()xhr.open(GET, http://192.168.145.135:9090/${path}${query ? ?${query} : })xhr.onreadystatechange () {if(xhr.readyState 4 xhr.status){document.querySelector(renderElement).innerText xhr.responsecallback ? callback(xhr.response) : }}xhr.send()} /script /body # 规定匹配的路径为 /get_time 或 /get_time? app.route(/get_datetime) def get_datetime():return datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S) 4、处理有 query 参数的 GET 请求 /templates/index.html 中新增的内容  liinput classname typetext placeholderplease input you nameselect classgender name idoption valuemanman/optionoption valuewomanwoman/option/selectbutton onclickrequest_args()click to get datetime/buttonp classname-gender/p/liscriptfunction request_args(){let name document.querySelector(.name).valuelet gender document.querySelector(.gender).valueget_request(get_with_args, .name-gender, name${name}gender${gender})} /script from flask import Flask,requestapp.route(/get_with_args) def get_with_args():args request.args# 各参数可以从 request 实例上去获取# print(args[name], args[gender])name args[name]gender args[gender]return f你好帅气的{name}先生 if gender man else f你好美丽的{name}小姐 关于 request 更多内容可以参考 https://flask.net.cn/api.html#incoming-request-data 6、处理 params 参数的 GET 请求  html 文件新增的测试内容 liinput classnickname typetext placeholderinput nicknameinput classage typenumber placeholderinput agebutton onclicksendParams()click to send params/buttonp classnickname-and-age/p/liscriptconst sendParams () {let nickname document.querySelector(.nickname).valuelet age document.querySelector(.age).valueget_request(test-params/${nickname}/${age}, .nickname-and-age, , (resdata){let strong document.createElement(strong)let obj JSON.parse(resdata)strong.innerText response data: nickname: ${obj.nickname}; age: ${obj.age}document.querySelector(.nickname-and-age).append(strong)})} /script # 两个 params 参数都必须传 预定义 nickname 参数为字符串age 为整型 app.route(/test-params/string:nickname/int:age) def test_params(nickname, age):return {nickname:nickname,age:age} 6、处理 application/json 类型请求体的 POST 请求 index.html 文件中新增的内容  liinput classusername typetextinput classpasswd typepasswordbutton classpost-btnclick to post/buttonp classpost-res/p/liscriptdocument.querySelector(.post-btn).addEventListener(click,(){fetch(http://localhost:9090/test-post,{method:post,body:JSON.stringify({username:document.querySelector(.username).value,passwd:document.querySelector(.passwd).value}),headers:{Content-Type:application/json,auth:abcdefg---6789}}).then(res res.text()).then(data{document.querySelector(.post-res).innerText data})}) /script app.route(/test-post, methods[post]) def test_post():str (request.data).decode()print(str)obj json.loads(str)print(obj[username])print(request.json[username])# print(request.get_data()) # 与 request.data 一致,是字符串类型# print(request.json) # 是dict类型return ok 7、根据参数渲染模板页面 index.js 中添加的内容  liinput typetext placeholderyour address class_addressinput typetext placeholderyour name class_namebutton classto-new-pageclick to new page with data/button/liscriptdocument.querySelector(.to-new-page).addEventListener(click, (){address document.querySelector(._address).valuename document.querySelector(._name).value# 在新的窗口中访问window.open(http://localhost:9090/new-page?address${address}name${name})}) /script 新创建两个 html  # new-page.html 当有 name 时返回的页面可以没有addressbody{% if address %}h1Hi {{name}}, we know your address is {{address}}./h1{% else %}h1Hello {{name}}!/h1{% endif %}img srchttps://tse3-mm.cn.bing.net/th/id/OIP-C.bVb769JBdzVZYuksxZ2Y-AHaEo?pidImgDetrs1 alt /body # 404.htmlheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title404/titlestylebody,html{margin: 0;padding: 0;}.outer{width: 100vw;height: 100vh;display: flex;justify-content: center;align-items: center;}.num{width: 100px;height: 100px;font-size: 5rem;font-weight: 900;text-shadow: 3px 3px 3px #aaa;}.num:nth-child(2n){ color: brown; }.num:nth-child(2n 1){ color: chocolate; }.num:nth-child(4){ width: auto; }/style /head bodydiv classouterdiv classnum4/divdiv classnum0/divdiv classnum4/divdiv classnumno found/div/div /body # 可以直接访问 app.route(/new-page) def new_page():# 设置 address 和 name 都不是必传参数address request.args[address] if request.args else name request.args[name] if request.args else if name: # 往模板页面传递两个参数return render_template(another.html, addressaddress, namename)else:# 如果没有名字则返回 404 的页面return render_template(404.html) 只有 name 时 name 和 address 都没有时 name 和 address 都具备时 8、上传文件 index.html 中新增的内容  liinput typefile accept.jpg,.png,.gif idfilebutton classupload-file onclickuploadFile()upload file/buttonp classupload-file-res/p/liscriptfunction uploadFile(){let files document.querySelector(#file).filesconst formdata new FormData()formdata.append(file, files[0])formdata.append(time, new Date().getTime())fetch(http://localhost:9090/upload-file,{method:post,body:formdata}).then(resres.text()).then(data{console.log(data)})} /scriptapp.route(/upload-file, methods[post]) def upload_file():if file not in request.files:return upload failfile request.files[file]if file.filename :return filename no foundfile.save(f./{file.filename}) # 保存图片到本地return ok 关于 flask 文件上传的更安全的处理上传文件_Flask中文网 数据库操作mysql 安装 pymysql pip install pymysql import pymysql# 连接指定数据库 conn pymysql.connect(hostlocalhost, userroot,passwordabcdef,databasepython_study,charsetutf8)# 定义一个游标对象靠游标对象来执行sql 以及获取 结果 #cursor conn.cursor() # 默认是元组形式的结果# 将游标对象定义为 字典 类型进而更方便地获取数据 from pymysql.cursors import DictCursor cursor conn.cursor(DictCursor) # 创建游标定义返回的数据类型是字典 查询语句的执行和结果获取 # 创建并执行 执行sql语句 sql select * from student cursor.execute(sql)# 获取执行的结果集 所有数据 res cursor.fetchall() print(res)# res cursor.fetchmany(3) # 获取前三条结果 关于更新类的操作增、删、改 # 更新一条数据 sql update student set age 9 where num 1000 cursor.execute(sql) conn.commit() # 显式提交更新操作# 新增一条数据注意格式化的sql语句如果有引号的要加上引号 name 许九 age 10 gender 男 num 1006 sql finsert into student values ({name},{num},{gender},{age}); cursor.execute(sql) conn.commit() 最后需要关闭连接 # 关闭连接 conn.close() 如果 连接的时候报错RuntimeError: cryptography package is required for sha256_password or caching_sha2_password auth methods 该错误指出需要 cryptography 包来处理 sha256_password 或 caching_sha2_password 的认证方式。 这可能是因为 Python 环境中缺少了 cryptography 包。这个包是一个 Python 的加密库它提供了许多加密算法的实现包括 sha256_password 和 caching_sha2_password 这两种 MySQL 的密码加密方式。 直接安装这个包然后再运行程序即可 pip install cryptography参考 [1] flask获取post请求参数_flask post参数_阿常呓语的博客-CSDN博客 [2] 快速上手_Flask中文网
http://www.dnsts.com.cn/news/94876.html

相关文章:

  • 招标网站的服务费怎么做分录wordpress 加载流程
  • 四川建设人才考试网官方网站网站建设的方案费用
  • 免费网站空间怎么做建设项目环境影响登记表备案系统网站
  • 学校门户网站开发python做网站前端
  • 高端网站定制互联网 现代农业网站建设
  • 个人简介网站源码宁德网站建设
  • 做网站都需要什么技术怎么做企业网站平台
  • 知名网站有哪些wordpress动漫主题曲
  • 国外的贸易网站大宗交易app下载
  • 网站制作留钱大庆医院网站建设方案
  • 网站开发费的会计处理云主机配置网站
  • 电商平台网站建设功能介绍服装品牌策划及营销推广方案
  • 大气网站首页欣赏一个地址能注册几个公司
  • 境外网站可以备案吗中文网站怎么做英文版
  • 厦门建行网站wordpress无法下载更新
  • 文化类网站的前置审批建设部网站职责划定
  • 创建网站和主页百度推广河南总部
  • 网站建设书籍在线阅读锚文本对网站
  • 网站建设合同按什么交印花税效果图网站发帖平台
  • 做交友类网站适合什么cmswordpress聚合平台模板
  • 三好街做网站公司dedecms网站如何上线
  • 购物网站建设基本流程树状图电商网站有哪些使用场景
  • 铁法能源公司网站注册营业执照网上申请入口
  • 怎么查询网站空间商建设部官网网站
  • 上海网站建设哪里便宜佛山网站建设锐艺传播
  • 仿礼物说网站模板模板网站做外贸可以吗
  • 新浪微博可以做网站吗邢台做移动网站多少钱
  • 做虚拟网站要花多少钱seo网站关键词
  • 房地产企业网站建设外贸网站推广平台蓝颜seo牛
  • 做网站之前备案wordpress做导航页面