在/ admin控制台中加载新模型的问题

时间:2014-12-17 14:16:22

标签: python mysql django hosting passenger

我有以下设置:

  • Dreamhost.com上的域,启用了WSGI的Passenger
  • Python 3.4
  • Django 1.7 in virtualenv
  • MySQL数据库

我已经正确设置了所有内容,并且正在学习Django环境中的代码。

我已成功完成位于此处的Django官方教程的第一部分: https://docs.djangoproject.com/en/1.7/intro/tutorial01/ 并开始研究:https://docs.djangoproject.com/en/1.7/intro/tutorial02/

这导致了一个"民意调查"应用程序内的" mysite"项目

"民意调查"应用程序有2个模型:问题和选择。

一切都成功地与MySQL同步。

然后我访问了polls / admin.py并编写了以下代码:

from django.contrib import admin
from polls.models import Question

admin.site.register(Question)

哪个应该在管理界面中启用问题模型。

当我尝试访问mydomain.com/admin界面时,模型问题没有显示出来。根据教程应该有。

在做了一些研究之后我已经考虑了一些,然后尝试触摸mydomain.com/tmp/restart.txt文件以重新启动passenger_wsgi.py文件。调用此文件以根据Passenger设置将Apache服务器与我的django应用程序链接。

之后,一切正常!它为什么有效?我不明白为什么passenger_wsgi.py必须重新启动。

这是passenger_wsgi.py中的代码:

import sys, os
cwd = os.getcwd()
sys.path.append(cwd)

project_location = cwd + "/djtest"

sys.path.insert(0,project_location)
os.environ['LD_LIBRARY_PATH'] = '/home/USERNAME/Python34/lib'

#Switch to new python
PYTHON_EXE = '/home/USERNAME/DOMAIN/env/bin/python3'

if sys.executable != PYTHON_EXE:
    os.execl(PYTHON_EXE, PYTHON_EXE, *sys.argv)

sys.path.insert(0,'home/USERNAME/DOMAIN/env/bin')
sys.path.insert(0,'home/USERNAME/DOMAIN/env/lib/python3.4/site-packages/django')
sys.path.insert(0,'home/USERNAME/DOMAIN/env/lib/python3.4/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = "djtest.settings"

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

1 个答案:

答案 0 :(得分:2)

因为WSGI的工作方式如下:Python代码在进程启动时加载,并且不会在每个请求上刷新(除非明确配置为这样做。)

在遵循本教程 - 以及整个开发过程中 - 您最好在本地开发并通过manage.py runserver使用内置开发服务器。