使用 python3.8 和 django3.1 在 pythonanywhere.com 中手动 webapp

Manual webapp in pythonanywhere.com using python3.8 and django3.1

背景

我在 pythonanywhere.com 有一个免费帐户。感谢他们提供非常好的免费服务和学习体验。

对于那些鼓励我使用 Whosebug 来解决有关他们网站的问题的 PythonAnywhere 人员,我首先要说我真的很喜欢你们在该网站上所做的一切,我很高兴自己开始在那里构建一些东西.

我已经在 pythonanywhere.com 中使用 Flask 和第二个简单的 webapp(我根据你的第一个教程改编)完成了第一个教程,完全相同但是使用内置的 django 2.2 代替 Flask .

现在我正在尝试使用 python 3.8 和 django 3.1 来自另一个站点的教程。

我正在关注 djangoforbeginners.com 站点 (helloworld app) 的第 2 章,并尝试在我的 pythonanywhere.com 帐户中执行那里的说明。我知道我需要调整一些 djangoforbeginners.com 指令以适应 pythonanywhere.com 环境(例如 pipenv 不起作用,但 pip install django~=3.1.0 起作用)。

(这不是我的主要问题,而是我预计将另一个站点的教程改编到 pythonanywhere.com 环境时遇到的问题的示例)我在 python manage.py runserver 步骤中遇到了问题:

当我 运行 上面的代码时,我在 bash 控制台看到以下错误:

Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
August 13, 2020 - 20:33:32
Django version 3.1, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Error: That port is already in use.

这对我来说很有意义,因为当我尝试以用户名访问我的网络应用程序时。pythonanywhere.com,我看到一个“即将推出”页面(在仪表板中禁用我的网络应用程序之后;我的网络应用程序在在仪表板 Web 选项卡上,我看到一个默认的“Hello World”页面),我知道在这两种情况下都意味着该端口确实已经在使用中(由 pythonanywhere.com 提供的服务器)。所以在看到那个错误后稍微想了一下,我现在认为我什至不应该在 pythonanywhere.com 环境中尝试这个 python manage.py runserver 步骤。呸! ;)

所以继续我的真正问题:

我已经按照我在 https://help.pythonanywhere.com/pages/Virtualenvs 找到的说明进行操作,包括末尾的部分:“现在你有了一个 virtualenv,并且你知道它的路径,你可以去输入它回来在“网络”选项卡中。

转到 Virtualenv 部分,然后输入路径:/home/myusername/.virtualenvs/myvirtualenv"

我在 pythonanywhere.com 的 bash 控制台中使用 mkvirtualenv virtualenv01py38 --python=/usr/bin/python3.8 创建了我的虚拟环境。

我还在 pythonanywhere.com 的仪表板的 Web 选项卡中添加了此 Web 应用程序的源代码目录:/home/username/projects/djangoforbeginners.com/ch02helloworld

当我使用仪表板 Web 选项卡重新加载 Web 应用程序时,我看到此错误消息:“您的 Web 应用程序需要很长时间才能重新加载。它可能已重新加载,但我们无法检查它。”

但是当我访问我的网络应用程序 URL 时,我看到的不是熟悉的 Django 欢迎页面,而是一个明显静态的 html 页面: “你好世界! 这是 PythonAnywhere 托管 Web 应用程序的默认欢迎页面..."

所以我的一般问题是如何在 pythonanywhere.com 环境中从 djangoforbeginners.com 实施 helloworld 应用程序?

现在更具体地说,我的问题是为什么我没有在第一张图片的 djangoforbeginners.com 处看到熟悉的 Django 欢迎页面,以及如何继续前进到 python manage.py runserver 当我显然看到 pythonanywhere.com 提供其默认的 hello world webapp(显然只是一个静态 html 页面)而不是我试图让它提供的 django 3.1 hello world 应用程序时的步骤来自 djangoforbeginners.com 教程?

提前感谢您的任何建议。

您不能从控制台 运行 您的 Django 网站。如果您希望它可用,则需要使用网络应用程序。我们有一个 help page 详细描述了如何 运行 现有的 Django 项目作为网络应用程序。

正如 Glenn 所说,您必须先在 Web 选项卡下创建一个 Web 应用程序。我写了一篇文章 How to deploy Django to Pythonanywhere,带您完成从 GitHub、HTTPS、MySQL 和环境变量的整个过程。