关于“Python”的核心知识点整理大全63

目录

20.2.11 使用 Git 跟踪项目文件

1. 安装Git

2. 配置Git

3. 忽略文件

.gitignore

注意

4. 提交项目

20.2.12 推送到 Heroku

注意

20.2.13 在 Heroku 上建立数据库

20.2.14 改进 Heroku 部署

1. 在Heroku上创建超级用户

注意

注意


20.2.11 使用 Git 跟踪项目文件

如果你阅读完了第17章,就知道Git是一个版本控制程序,让你能够在每次成功实现新功能 后都拍摄项目代码的快照。无论出现什么问题(如实现新功能时不小心引入了bug),你都可以轻 松地恢复到最后一个可行的快照。每个快照都被称为提交。 使用Git意味着你在试着实现新功能时无需担心破坏项目。将项目部署到服务器时,需要确 保部署的是可行版本。如果你想更详细地了解Git和版本控制,请参阅附录D。

1. 安装Git

Heroku Toolbelt包含Git,因此它应该已经安装到了你的系统中。然而,在安装Heroku Toolbelt之 前打开的终端窗口中无法访问Git,因此请打开一个新的终端窗口,并在其中执行命令git --version:

(ll_env)learning_log$ git --version
git version 2.5.0 

如果由于某种原因出现了错误消息,请参阅附录D中的Git安装说明。

2. 配置Git

Git跟踪谁修改了项目,即便项目由一个人开发时亦如此。为进行跟踪,Git需要知道你的用 户名和email。因此,你必须提供用户名,但对于练习项目,可随便伪造一个email:

(ll_env)learning_log$ git config --global user.name "ehmatthes"
(ll_env)learning_log$ git config --global user.email "eric@example.com"

如果你忘记了这一步,当你首次提交时,Git将提示你提供这些信息。

3. 忽略文件

我们无需让Git跟踪项目中的每个文件,因此将让Git忽略一些文件。为此,在manage.py所在 的文件夹中创建一个名为.gitignore的文件。注意,这个文件名以句点打头,且不包含扩展名。在 这个文件中输入如下内容:

.gitignore
ll_env/
__pycache__/
*.sqlite3

我们让Git忽略目录ll_env,因为我们随时都可以自动重新创建它。我们还指定不跟踪目录 __pycache__,这个目录包含Django运行.py文件时自动创建的.pyc文件。我们没有跟踪对本地数 据库的修改,因为这是一个糟糕的做法:如果你在服务器上使用的是SQLite,当你将项目推送到服务器时,可能会不小心用本地测试数据库覆盖在线数据库。


注意

如果你使用的是Python 2.7,请将_pycache_替换为*.pyc,因为Python 2.7不会创建目录 __pycache__。


4. 提交项目

我们需要为“学习笔记”初始化一个Git仓库,将所有必要的文件都加入到这个仓库中,并 提交项目的初始状态,如下所示:

1 (ll_env)learning_log$ git init
Initialized empty Git repository in /home/ehmatthes/pcc/learning_log/.git/
2 (ll_env)learning_log$ git add .
3 (ll_env)learning_log$ git commit -am "Ready for deployment to heroku."
[master (root-commit) dbc1d99] Ready for deployment to heroku.43 files changed, 746 insertions(+)create mode 100644 .gitignorecreate mode 100644 Procfile--snip--create mode 100644 users/views.py
4 (ll_env)learning_log$ git status
# On branch master
nothing to commit, working directory clean
(ll_env)learning_log$

在1处,我们执行命令git init,在“学习笔记”所在的目录中初始化一个空仓库。在2处, 我们执行了命令git add .(千万别忘了这个句点),它将未被忽略的文件都添加到这个仓库中。 在3处,我们执行了命令git commit -am commit message,其中的标志-a让Git在这个提交中包含 所有修改过的文件,而标志-m让Git记录一条日志消息。

在4处,我们执行了命令git status,输出表明当前位于分支master中,而工作目录是干净 (clean)的。每当你要将项目推送到Heroku时,都希望看到这样的状态。

20.2.12 推送到 Heroku

我们终于为将项目推送到Heroku做好了准备。在活动的虚拟环境中,执行下面的命令:

1 (ll_env)learning_log$ heroku login
Enter your Heroku credentials.
Email: eric@example.com
Password (typing will be hidden):
Logged in as eric@example.com
2 (ll_env)learning_log$ heroku create
Creating afternoon-meadow-2775... done, stack is cedar-14
https://afternoon-meadow-2775.herokuapp.com/ |https://git.heroku.com/afternoon-meadow-2775.git
Git remote heroku added
3 (ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Launching... done, v6
4 remote: https://afternoon-meadow-2775.herokuapp.com/ deployed to Heroku
remote: Verifying deploy.... done.
To https://git.heroku.com/afternoon-meadow-2775.gitbdb2a35..62d711d master -> master
(ll_env)learning_log$

首先,在终端会话中,使用你在https://heroku.com/创建账户时指定的用户名和密码来登录 Heroku(见1)。然后,让Heroku创建一个空项目(见2)。Heroku生成的项目名由两个单词和一 个数字组成,你以后可修改这个名称。接下来,我们执行命令git push heroku master(见3), 它让Git将项目的分支master推送到Heroku刚才创建的仓库中;Heroku随后使用这些文件在其服务 器上创建项目。4处列出了用于访问这个项目的URL。

执行这些命令后,项目就部署好了,但还未对其做全面的配置。为核实正确地启动了服务器 进程,请执行命令heroku ps:

(ll_env)learning_log$ heroku ps
1 Free quota left: 17h 40m
2 === web (Free): `gunicorn learning_log.wsgi __log-file -`
web.1: up 2015/08/14 07:08:51 (~ 10m ago)
(ll_env)learning_log$

输出指出了在接下来的24小时内,项目还可在多长时间内处于活动状态(见1)。编写本书 时,Heroku允许免费部署在24小时内最多可以有18小时处于活动状态。项目的活动时间超过这个 限制后,将显示标准的服务器错误页面,稍后我们将设置这个错误页面。在2处,我们发现启动 了Procfile指定的进程。

现在,我们可以使用命令heroku open在浏览器中打开这个应用程序了:

(ll_env)learning_log$ heroku open
Opening afternoon-meadow-2775... done

你也可以启动浏览器并输入Heroku告诉你的URL,但上述命令可实现同样的结果。你将看到 “学习笔记”的主页,其样式设置正确无误,但你还无法使用这个应用程序,因为我们还没有建 立数据库。


注意

部署到Heroku的流程会不断变化。如果你遇到无法解决的问题,请通过查看Heroku文档 来获取帮助。为此,可访问https://devcenter.heroku.com/,单击Python,再单击链接Getting Started with Django。如果你看不懂这些文档,请参阅附录C提供的建议。


20.2.13 在 Heroku 上建立数据库

为建立在线数据库,我们需要再次执行命令migrate,并应用在开发期间生成的所有迁移。要对Heroku项目执行Django和Python命令,可使用命令heroku run。下面演示了如何对Heroku部 署执行命令migrate:

1 (ll_env)learning_log$ heroku run python manage.py migrate
2 Running `python manage.py migrate` on afternoon-meadow-2775... up, run.2435--snip--
3 Running migrations:--snip--Applying learning_logs.0001_initial... OKApplying learning_logs.0002_entry... OKApplying learning_logs.0003_topic_user... OKApplying sessions.0001_initial... OK
(ll_env)learning_log$ 

我们首先执行了命令heroku run python manage.py migrate(见1);Heroku随后创建一个终 端会话来执行命令migrate(见2)。在3处,Django应用默认迁移以及我们在开发“学习笔记” 期间生成的迁移。 现在如果你访问这个部署的应用程序,将能够像在本地系统上一样使用它。然而,你看不到 你在本地部署中输入的任何数据,因为它们没有复制到在线服务器。一种通常的做法是不将本地 数据复制到在线部署中,因为本地数据通常是测试数据。 你可以分享“学习笔记”的Heroku URL,让任何人都可以使用它。在下一节,我们将再完 成几个任务,以结束部署过程并让你能够继续开发“学习笔记”。

20.2.14 改进 Heroku 部署

在本节中,我们将通过创建超级用户来改进部署,就像在本地一样。我们还将让这个项目更 安全:将DEBUG设置为False,让用户在错误消息中看不到额外的信息,以防他们使用这些信息来 攻击服务器。

1. 在Heroku上创建超级用户

我们知道可使用命令heroku run来执行一次性命令,但也可这样执行命令:在连接到了Heroku 服务器的情况下,使用命令heroku run bash来打开Bash终端会话。Bash是众多Linux终端运行的 语言。我们将使用Bash终端会话来创建超级用户,以便能够访问在线应用程序的管理网站:

(ll_env)learning_log$ heroku run bash
Running `bash` on afternoon-meadow-2775... up, run.6244
1 ~ $ ls
learning_log learning_logs manage.py Procfile requirements.txt runtime.txt users
staticfiles
2 ~ $ python manage.py createsuperuser
Username (leave blank to use 'u41907'): ll_admin
Email address:
Password:
Password (again):
Superuser created successfully.
3 ~ $ exit 
exit
(ll_env)learning_log$

在1处,我们执行命令ls,以查看服务器上有哪些文件和目录;服务器包含的文件和目录应 该与本地系统相同。你可以像遍历其他文件系统一样遍历这个文件系统。


注意

即便你使用的是Windows系统,也应使用这里列出的命令(如ls而不是dir),因为你正通 过远程连接运行一个Linux终端。


在2处,我们执行了创建超级用户的命令,它像第18章在本地系统创建超级用户一样提示你 输入相关的信息。在这个终端会话中创建超级用户后,使用命令exit返回到本地系统的终端会话 (见3)。

现在,你可以在在线应用程序的URL末尾添加/admin/来登录管理网站了。对我而言,这个 URL为https://afternoon-meadow-2775.herokuapp.com/admin/。 如果已经有其他人开始使用这个项目,别忘了你可以访问他们的所有数据!千万别不把这当 回事,否则用户就不会再将其数据托付给你了。

2. 在Heroku上创建对用户友好的URL

你可能希望URL更友好,比https://afternoon-meadow-2775.herokuapp.com/更好记。为此,可 只需使用一个命令来重命名应用程序:

(ll_env)learning_log$ heroku apps:rename learning-log
Renaming afternoon-meadow-2775 to learning-log... done
https://learning-log.herokuapp.com/ | https://git.heroku.com/learning-log.git
Git remote heroku updated
(ll_env)learning_log$

给应用程序命名时,可使用字母、数字和连字符;你想怎么命名应用程序都可以,只要指定 的名称未被别人使用就行。现在,项目的URL变成了https://learning-log.herokuapp.com/;使用以 前的URL再也无法访问它,命令apps:rename 将整个项目都移到了新的URL处。


注意

你使用Heroku提供的免费服务来部署项目时,如果项目在指定的时间内未收到请求或过 于活跃,Heroku将让项目进入休眠状态。用户初次访问处于休眠状态的网站时,加载时 间将更长,但对于后续请求,服务器的响应速度将更快。这就是Heroku能够提供免费部 署的原因所在。


关于“Python”的核心知识点整理大全62-CSDN博客

关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/235338.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu22.04,Nvidia4070配置llama2

大部分内容参考了这篇非常详细的博客,是我最近看到的为数不多的保姆级别的教学博客,建议大家去给博主点个赞【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】_ubuntu20.04安装40系显卡驱动-CSDN博客 本篇主要是基于这篇博客结合自己配置的过程中一些注…

计算机二级WPS Office考试须知、如何备考、备考建议

本文从计算机二级考试须知、如何备考、备考建议以及考试的注意事项等方面进行讲述,认认真真看,对你受益匪浅。 一、计算机二级考试须知 2021年3月27日至29日将举办第60次全国计算机等级考试(NCRE),从今年起&#xff0…

C# 使用Fleck创建WebSocket服务器

目录 写在前面 代码实现 服务端代码 客户端代码 调用示例 写在前面 Fleck 是 C# 实现的 WebSocket 服务器,通过 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道;两者之间…

十大开放式耳机品牌哪个好?开放式耳机详细评测攻略分享,精华篇

相信很多朋友在选购开放式耳机的时候,发现市场上的开放式耳机品牌琳琅满目,完全不清楚哪家的产品更胜一筹,有些人甚至跟风购入,因此很容易买到不合适自己的而踩雷。 其实这种耳机我很早之前就有在使用,我对于耳机数码类…

【人工智能Ⅰ】实验11:支持向量机

实验11 支持向量机 一、实验目的 1:了解支持向量机的结构和原理。 2:应用支持向量机建立训练模型,对模型进行评估。 二、实验内容和要求 【实验内容】 选择支持向量机,对花卉图像或玉米果穗图像进行分类。花卉图像包括玫瑰&a…

详解ajax、fetch、axios的区别

众所周知它们都用来发送请求,其实它们区别还蛮大的。这也是面试中的高频题,本文将详细进行讲解。 1. ajax 英译过来是Aysnchronous JavaScript And XML,直译是异步JS和XML(XML类似HTML,但是设计宗旨就为了传输数据&a…

Android14之解决Pixel手机联网出现感叹号(一百八十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

景联文科技:以高质量数据赋能文生图大模型

1月5日,在智求共赢・中国AIGC产业应用峰会暨无界AI生态合作伙伴大会上,中国AIGC产业联盟联合无界AI发布了《中国AIGC文生图产业白皮书2023》,从AIGC文生图发展历程、主流工具、产业实践以及规模预测等多个维度,全面揭示了中国AIGC…

Vue中的class和style绑定

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介动态绑定class对象语法数组语法 动态绑定style对象语法多重值 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习…

TS 36.331 V12.0.0-过程(2)-连接控制(3)-RRC连接释放

​本文的内容主要涉及TS 36.331,版本是C00,也就是V12.0.0。

Spring MVC 的RequestMapping注解

RequestMapping注解 使用说明 作用:用于建立请求URL和处理请求方法之间的对应关系。 出现位置: 类上: 请求 URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以…

Web实战丨基于django+html+css+js的学院门户网站

文章目录 写在前面项目概述基本信息项目需求 项目框架程序设计运行结果项目总结 写在后面 写在前面 本期内容:基于DjangoHtmlCssJavaScript的学院门户网站 项目需求: pythondjango 项目下载地址:https://download.csdn.net/download/m0_6…

JAVA课程设计--类京东购物车设计

目录 小组成员 负责模块: 程序介绍: 1.前期调查: 1.1京东购物车页面 首页 购物车界面 商品信息界面 搜索界面 1.2程序设计页面 首页 购物车页面 商品信息界面 搜索界面: 2.使用环境: 3.技术支持 前端V…

Provide/Inject 依赖注入(未完待续)

父组件传递给子组件数据,通过props,但是需要逐层传递 provide/Inject 的推出就是为了解决这个问题,它提供了一种组件之间共享此类值的方式,不必通过组件树每层级显示地传递props 目的是为了共享那些被 认为对于一个组件树而言是全局的数据 p…

海外代理IP在游戏中有什么作用?

随着科技的飞速发展,手机和电脑等电子产品已成为互联网连接万物的重要工具,深度融入我们的日常生活,我们借助互联网完成工作、休闲和购物等任务,以求提升生活质量。 不仅如此,网络游戏也是人们心中最爱,它…

【51单片机】独立按键控制LED灯

不同于上篇文章只用代码控制,这次我们要再加上独立按键一同控制LED灯 目录 独立按键控制LED亮灭:代码实现: 独立按键控制LED状态:代码实现: 独立按键实现二进制LED显示:代码实现: 独立按键控制…

cpp_10_多重继承_钻石继承_虚继承

1 多重继承 一个类可以同时从多个基类继承实现代码。 1.1 多重继承的内存布局 子类对象内部包含多个基类子对象。 按照继承表的顺序依次被构造,析构的顺序与构造严格相反。 各个基类子对象按照从低地址到高地址排列。 // miorder.cpp 多重继承:一个子…

跑代码相关 初始环境配置

是看了这个视频:深度学习python环境配置_哔哩哔哩_bilibili 总结的个人笔记 这个是从零开始配python环境的比较好的经验教程: 深度学习python的配置(Windows) - m1racle - 博客园 (cnblogs.com) 然后关于CUDA和cuDNN&#xff…

武汉灰京文化:跨平台游戏的崛起,破壁无界,畅游全场!

随着科技的飞速发展,游戏平台之间的界限逐渐模糊,许多优秀的游戏已经不再只局限于单一的游戏设备平台。无论你身处何处,只要有网络连接,你就可以随时随地畅玩自己喜欢的游戏,而无需更换设备或重新安装,这无…

UniRepLKNet实战:使用UniRepLKNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集一些问题 摘要 大核卷积神经网络(ConvNets)近年来受到广泛关注,但仍存在两个关键问题需要进一步研究。首先,目前的大型卷积神经网络架构大…