摘要:和是最受欢迎的。虚拟环境将允许将项目依赖项与本地机器依赖项隔离开来。文件将是项目中的主文件。运行后,检查本地主机。在中创建一个名为的文件夹,并创建一个名为的文件夹。部署创建帐户为前端和全栈应用程序提供免费部署服务。
挑战学习Python编程30天最终篇,要结束了,后面还会持续更新其他方面,关注我
你们的三连(点赞,收藏,评论)是我持续输出的动力,感谢。
在兴趣中学习,效益超乎想象,有趣的源码与学习经验,工具安装包,欢迎加我的微信:bobin1124,一起交流学习与分享。
Python 是一种通用编程语言,可用于许多地方。在本节中,我们将了解如何在 Web 上使用 Python。Python 网页框架作品很多。Django 和 Flask 是最受欢迎的。今天,我们将看到如何使用 Flask 进行 Web 开发。
Flask 是一个用 Python 编写的 Web 开发框架。Flask 使用 Jinja2 模板引擎。Flask 也可以与其他现代前端库一起使用,例如 React。
如果您还没有安装 virtualenv 包,请先安装它。虚拟环境将允许将项目依赖项与本地机器依赖项隔离开来。
完成所有步骤后,您的项目文件结构应如下所示:
├── 配置文件├── app.py├──环境│ ├── bin├──需求.txt├── 静态│ └── css│ └── main.css└── 模板 ├── about.html ├── home.html ├── layout.html ├── post.html └── 结果.html
按照以下步骤开始使用 Flask。
步骤 1:使用以下命令安装 virtualenv。
pip 安装 virtualenv
第2步:
asabeneh@Asabeneh:~/Desktop$ mkdir python_for_webasabeneh@Asabeneh:~/Desktop$ cd python_for_web/asabeneh@Asabeneh:~/Desktop/python_for_web$ virtualenv venvasabeneh@Asabeneh:~/Desktop/python_for_web$ source venv/bin/activate(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip freeze(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip install Flask(env) asabeneh@Asabeneh:~/Desktop/python_for_web$ pip freezeClick==7.0Flask==1.1.1itsdangerous==1.1.0Jinja2==2.10.3MarkupSafe==1.1.1Werkzeug==0.16.0(env) asabeneh@Asabeneh:~/Desktop/python_for_web$
我们创建了一个名为 python_for_web 的项目主管。在项目中,我们创建了一个虚拟环境venv,它可以是任何名称,但我更喜欢称之为venv。然后我们激活了虚拟环境。我们使用 pip freeze 检查项目目录中已安装的包。pip freeze 的结果是空的,因为一个包还没有安装。
现在,让我们在项目目录中创建 app.py 文件并编写以下代码。app.py 文件将是项目中的主文件。下面的代码有flask模块,os模块。
回家路线。
#让我们从 flask 导入 flask import Flask import os #导入操作系统模块app = Flask ( __name__ )@app.route("/") # 这个装饰器创建 home 路由def home (): return "Welcome
"@app.route("/about")def about (): return "About us
"如果 __name__ == "__main__" :#部署,我们使用ENVIRON #使之成为生产和开发工作 port = int(os.environ.get("PORT", 5000)) app.run(debug=True, host="0.0.0.0", port=port)
要运行flask 应用程序,请在主flask 应用程序目录中编写python app.py。
运行python app.py 后,检查本地主机 5000。
让我们添加额外的路线。创建关于路由
#让我们从 flask 导入 flask import Flask import os #导入操作系统模块app = Flask ( __name__ )@app.route("/") # 这个装饰器创建 home 路由def home (): return "Welcome
"@app.route("/about")def about (): return "About us
"如果 __name__ == "__main__" :#部署,我们使用ENVIRON #使之成为生产和开发工作 port = int(os.environ.get("PORT", 5000)) app.run(debug=True, host="0.0.0.0", port=port)
现在,我们在上面的代码中添加了 about 路由。如果我们想渲染一个 HTML 文件而不是字符串呢?可以使用函数render_templae渲染 HTML 文件。让我们创建一个名为 templates 的文件夹,并在项目目录中创建 home.html 和 about.html。让我们也从flask导入render_template函数。
在模板文件夹中创建 HTML 文件。
主页.html
<!DOCTYPE html > < html lang =" en " > < head > < meta charset =" UTF-8 " /> <元 名称="viewport" content =" width=device-width, initial-scale=1.0 " / > < title >首页</ title > </ head > < body > < h1 >Welcome Home</ h1 > </ body > </ html >
关于.html
<!DOCTYPE html > < html lang =" en " > < head > < meta charset =" UTF-8 " /> <元 名称="viewport" content =" width=device-width, initial-scale=1.0 " / > < title >关于</ title > </ head > < body > < h1 >关于我们</ h1 > </ body > </ html >
app.py
# 让我们从 flask 导入 flask import Flask , render_template import os # 导入操作系统模块app = Flask ( __name__ )@app.route("/") # 这个装饰器创建 home 路由def home (): return render_template ( "home.html" )@app.route("/about")def about(): 返回 render_template("about.html")如果 __name__ == "__main__" :#部署,我们使用ENVIRON #使之成为生产和开发工作 port = int(os.environ.get("PORT", 5000)) app.run(debug=True, host="0.0.0.0", port=port)
如您所见,要转到不同的页面或导航,我们需要导航。让我们为每个页面添加一个链接,或者让我们创建一个用于每个页面的布局。
<ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li></ul>
现在,我们可以使用上面的链接在页面之间导航。让我们创建处理表单数据的附加页面。你可以叫它任何名字,我喜欢叫它 post.html。
我们可以使用 Jinja2 模板引擎将数据注入到 HTML 文件中。
# 让我们从 flask 导入 flask import Flask , render_template , request , redirect , url_for import os # 导入操作系统模块app = Flask ( __name__ )@app.route ( "/" ) # 这个装饰器创建 home 路由def home (): techs = [ "HTML" , "CSS" , "Flask" , "Python" ] name = "30 Days Of Python Programming" return render_template ( " home.html" , techs = techs , name = name , title = "Home" )@app.route( "/about" ) def about (): name = "30 Days Of Python Programming" return render_template ( "about.html" , name = name , title = "About Us" )@app.route( "/post" ) def post (): name = "Text Analyzer" return render_template ( "post.html" , name = name , title = name )如果 __name__ == "__main__" :#部署#使之成为生产和开发工作 port = int(os.environ.get("PORT", 5000)) app.run(debug=True, host="0.0.0.0", port=port)
让我们也看看模板:
主页.html
<!DOCTYPE html > < html lang =" en " > < head > < meta charset =" UTF-8 " /> <元 名称="视口" content =" width=device-width, initial-scale=1.0 " / > < title >首页</ title > </ head ><body> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> </ul> <h1>Welcome to {{name}}</h1> <ul> {% for tech in techs %} <li>{{tech}}</li> {% endfor %} </ul> </body></html>
关于.html
<!DOCTYPE html > < html lang =" en " > < head > < meta charset =" UTF-8 " /> <元 名称="视口" content =" width=device-width, initial-scale=1.0 " / > < title >关于我们</ title > </ head > <body> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> </ul> <h1>About Us</h1> <h2>{{name}}</h2> </body></html>
在模板文件中,有很多重复的代码,我们可以写一个布局,我们可以删除重复。让我们在模板文件夹中创建 layout.html。创建布局后,我们将导入到每个文件中。
在您的项目目录中创建一个静态文件夹。在静态文件夹中创建 CSS 或样式文件夹并创建一个 CSS 样式表。我们使用url_for模块来提供静态文件。
布局.html
<!DOCTYPE html > < html lang =" en " > < head > < meta charset =" UTF-8 " /> <元 名称="视口" content =" width=device-width, initial-scale=1.0 " / > < link href =" https://fonts.googleapis.com/css?family=Lato:300,400|Nunito:300,400|Raleway:300,400,500&display=swap " rel ="样式表" /> < link rel ="样式表" href =" {{url_for("static", filename="css/main.css") }} " /> {% if title %} <title>30 Days of Python - {{ title}}</title> {% else %} <title>30 Days of Python</title> {% endif %} </head> <body> <header> <div class="menu-container"> <div> <a class="brand-name nav-link" href="/">30DaysOfPython</a> </div> <ul class="nav-lists"> <li class="nav-list"> <a class="nav-link active" href="{{ url_for("home") }}">Home</a> </li> <li class="nav-list"> <a class="nav-link active" href="{{ url_for("about") }}">About</a> </li> <li class="nav-list"> <a class="nav-link active" href="{{ url_for("post") }}" >Text Analyzer</a > </li> </ul> </div> </header> <main> {% block content %} {% endblock %} </main> </body></html>
现在,让我们删除其他模板文件中的所有重复代码并导入 layout.html。href 使用url_for函数和路由函数的名称来连接每个导航路由。
主页.html
{% extends "layout.html" %} {% block content %}<div class="container"> <h1>Welcome to {{name}}</h1> <p> 此应用程序清理文本并分析单词、字符和 文本中出现频率最高的词。通过单击文本分析器检查它 菜单。您需要以下技术来构建此 Web 应用程序: </ p > <ul class="tech-lists"> {% for tech in techs %} <li class="tech">{{tech}}</li> {% endfor %} </ul></div>{% endblock %}
关于.html
{% extends "layout.html" %} {% block content %} < div class =" container " > < h1 >关于{{name}} </ h1 > < p > 这是 30 天的 Python 编程挑战。如果你一直在编码 到目前为止,你太棒了。祝贺你的工作做得好! </ p > </ div > {% endblock %}
后.html
{% extends "layout.html" %} {% block content %} < div class =" container " > < h1 >文本分析器</ h1 > < form action =" https://thirtydaysofpython-v1.herokuapp.com/post" method="POST"> < DIV > < textarea的 行=” 25 “名称=”内容“的自动对焦> </ textarea的> </ div > <div > < input type =" submit " class =" btn " value ="处理文本"/> </ div > </ form > </ div >{% 结束块 %}
请求方法,有不同的请求方法(GET、POST、PUT、DELETE)是常见的请求方法,它们允许我们进行 CRUD(创建、读取、更新、删除)操作。
在帖子中,我们将根据请求的类型使用 GET 和 POST 方法替代,请查看下面代码中的外观。请求方法是处理请求方法和访问表单数据的函数。应用程序
# 让我们从 flask 导入 flask import Flask , render_template , request , redirect , url_for import os # 导入操作系统模块app = Flask ( __name__ ) # 停止缓存静态文件app . 配置[ "SEND_FILE_MAX_AGE_DEFAULT" ] = 0@app.route ( "/" ) # 这个装饰器创建 home 路由def home (): techs = [ "HTML" , "CSS" , "Flask" , "Python" ] name = "30 Days Of Python Programming" return render_template ( " home.html" , techs = techs , name = name , title = "Home" )@app.route ( "/about" ) def about (): name = "30 Days Of Python Programming" return render_template ( "about.html" , name = name , title = "About Us" )@app.route("/result")def result(): 返回 render_template("result.html")@app.route ( "/post" , methods = [ "GET" , "POST" ]) def post (): name = "Text Analyzer" if request。method == "GET" : 如果request,则返回 render_template ( "post.html" , name = name , title = name ) if request.method =="POST": content = request.form["content"] print(content) return redirect(url_for("result"))如果 __name__ == "__main__" :# 部署#使之成为生产和开发工作 port = int(os.environ.get("PORT", 5000)) app.run(debug=True, host="0.0.0.0", port=port)
到目前为止,我们已经看到了如何使用模板以及如何向模板注入数据,如何进行通用布局。现在,让我们处理静态文件。在project Director中创建一个名为static的文件夹,并创建一个名为css的文件夹。在 css 文件夹中创建 main.css。你的主要。css 文件将链接到 layout.html。
您不必编写css文件,复制并使用它。让我们继续进行部署。
创建 Heroku 帐户
Heroku 为前端和全栈应用程序提供免费部署服务。在heroku上创建一个帐户并为您的机器安装 heroku CLI。安装heroku后写下以下命令
登录 Heroku
asabeneh@Asabeneh: ~ $ heroku 登录heroku:按任意键打开浏览器登录或 q 退出:
让我们通过单击键盘上的任意键来查看结果。当您按键盘上的任意键时,它将打开 heroku 登录页面并单击登录页面。然后你将本地机器连接到远程 heroku 服务器。如果你连接到远程服务器,你会看到这个。
asabeneh@Asabeneh: ~ $ heroku 登录heroku:按任意键打开浏览器登录或 q 退出:打开浏览器到 https://cli-auth.heroku.com/auth/browser/be12987c-583a-4458-a2c2-ba2ce7f41610登录...进行已记录在为asabeneh@gmail.comasabeneh@Asabeneh:~ $
创建需求和Procfile
在我们将代码推送到远程服务器之前,我们需要一些要求
(env) asabeneh@Asabeneh: ~ /Desktop/python_for_web$ pip freezeClick==7.0Flask==1.1.1itsdangerous==1.1.0Jinja2=
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122015.html
摘要:针对的初学者,从无到有的语言如何入门,主要包括了的简介,如何下载,如何安装,如何使用终端,等各种开发环境进行开发,中的语法和基本知识概念和逻辑,以及继续深入学习的方法。 ...
摘要:值得一提的是每篇文章都是我用心整理的,编者一贯坚持使用通俗形象的语言给我的读者朋友们讲解机器学习深度学习的各个知识点。今天,红色石头特此将以前所有的原创文章整理出来,组成一个比较合理完整的机器学习深度学习的学习路线图,希望能够帮助到大家。 一年多来,公众号【AI有道】已经发布了 140+ 的原创文章了。内容涉及林轩田机器学习课程笔记、吴恩达 deeplearning.ai 课程笔记、机...
摘要:功能齐全支持考勤会议管理云盘等,适用于企业协同办公支付工具库,轻松完成支付模块开发。包含训练好的模型和微服务,启动后可直接通过接口调用基于图像识别的自动化框架,支持吃鸡类射击类类等游戏类型。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidd...
摘要:元组是有序且不可更改或不可修改不可变的集合。不允许重复成员。列表是有序且可修改可变的不同数据类型的集合。避免上述问题的一种方法是使用。计数橙色年龄,,,,,,,打印年龄。语法反转水果香蕉,橙色,芒果,柠檬水果。按字母顺序排序,年龄。 ...
阅读 1867·2021-11-22 09:34
阅读 1140·2021-10-09 09:44
阅读 3000·2021-09-29 09:35
阅读 3616·2021-09-14 18:01
阅读 1464·2021-08-16 10:49
阅读 1082·2019-08-29 14:11
阅读 847·2019-08-29 12:47
阅读 3067·2019-08-26 13:47