You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Google App Engine实例运行manage.py migrate及部署后启用Django后台

嘿,我来帮你理清楚这两个问题——在Google App Engine上运行Django的migrate命令,还有部署后启用管理站点,这俩都是Django部署到GAE的常规操作,我拆成步骤给你讲明白:

一、在GAE实例上运行py manage.py migrate

GAE分标准环境灵活环境,两种环境的操作逻辑不一样,我分别说明:

1. 标准环境(绝大多数Django项目用这个)

标准环境没法直接SSH进实例,得通过Cloud Shell或者本地的gcloud CLI来远程执行命令:

  • 先确保你已经装好了gcloud CLI,并且登录到了你的Google Cloud账号(用Cloud Shell的话这些都默认配置好了)
  • 直接跑这条命令就能远程执行迁移:
    gcloud app exec --service=default -- python manage.py migrate
    
    要是你的服务不是默认的default,把--service=default换成你的服务名就行。

另外,你也可以配置部署时自动执行迁移,在app.yaml里加这段配置就行——但提醒下,复杂迁移(比如涉及数据结构变更的)不建议这么干,容易出问题,手动执行更稳妥:

entrypoint: gunicorn -b :$PORT myproject.wsgi --preload
env_variables:
  DJANGO_SETTINGS_MODULE: myproject.settings
  POST_DEPLOY_SCRIPT: python manage.py migrate --noinput

2. 灵活环境

灵活环境允许直接SSH登录实例,操作和普通服务器差不多:

  • 先列出你的实例,找到要登录的实例ID:
    gcloud app instances list
    
  • SSH进目标实例:
    gcloud app instances ssh [你的实例ID] --service=default
    
  • 进入应用目录(一般是/app),然后执行迁移:
    cd /app
    python manage.py migrate
    

二、部署完成后启用Django管理站点

其实admin站点不需要额外"启动",只要配置到位,部署后直接访问就行,关键要做好这几步:

1. 确认admin已经启用

打开你的settings.py,检查INSTALLED_APPS里有没有django.contrib.admin,没有的话加上:

INSTALLED_APPS = [
    'django.contrib.admin',  # 这行必须有
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 你的其他应用
]

2. 配置URL路由

检查项目根目录的urls.py,确保包含admin的路由:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),  # 这行不能少
    # 你的其他路由
]

3. 创建超级用户

要登录admin必须有超级用户,同样分环境操作:

标准环境

用远程命令创建:

gcloud app exec --service=default -- python manage.py createsuperuser

跟着提示输入用户名、邮箱、密码就行。

灵活环境

SSH进实例后,进入应用目录执行:

python manage.py createsuperuser

4. 访问管理站点

部署完成后,直接在你的GAE应用地址后面加上/admin,比如https://你的项目ID.uc.r.appspot.com/admin,用刚才创建的超级用户账号登录就能用了。


内容的提问来源于stack exchange,提问作者Xceptions

火山引擎 最新活动