首页 > 解决方案 > 在 pythonanywhere.com 中使用 python3.8 和 django3.1 手动 webapp

问题描述

背景

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

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

我已经用 Flask 完成了 pythonanywhere.com 中的第一个教程和第二个简单的 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.

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

所以继续我的真正问题:

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

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

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

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

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

但是,当我访问我的 web 应用程序的 URL 时,我看到的不是熟悉的 Django 欢迎页面,而是一个明显静态的 html 页面:“Hello,World!这是 PythonAnywhere 托管的 Web 应用程序的默认欢迎页面......”

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

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

在此先感谢您的任何建议。

标签: pythondjangopythonanywhere

解决方案


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


推荐阅读