对于发布的大量代码/配置,我深表歉意——但我正在努力寻找错误,并希望有人能够发现它。这是我第一次使用 django/virtualenv,所以我确信这可能是一些愚蠢的事情。作为记录,我使用的是 Python 2.7 和 Django 1.5。我在共享服务器上,但我有一个包含所有必要依赖项的虚拟环境。
现在,当我的 .urls 将所有管理页面都注释掉时,我可以看到 Django 欢迎屏幕。但是,我一直在设置一个 sqlite3(我知道不建议将其用于生产)数据库来处理我的一个名为 users 的应用程序。
我可以使用 python shell 成功地将 User 类型的对象添加到数据库中。所以这不是数据库问题。据我所知,当它尝试在某些时候呈现网页时,它正在调用模块用户,但找不到它。因此,它必须从项目目录外部调用。这让我觉得我可能需要在我的路径中添加一些东西?但是我要添加什么?
我的 virtualenv site-packages 目录中有一个符号链接到我的项目的内部文件夹 - 即 project/project (这是应用程序用户的内部)。所以我的猜测是我需要将该符号链接更改为指向外部项目目录?
我的项目结构如下:
/project
/project/project_db
/project/manage.py
/project/users/__init__.py
/project/users/admin.py
/project/users/models.py
/project/users/tests.py
/project/users/views.py
/project/project/__init__.py
/project/project/settings.py
/project/project/urls.py
/project/project/wsgi.py
现在,相关文件:
/project/project/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'project_db', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}
#...
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'users',
)
下一步:/project/users/models.py
from django.db import models
# Create your models here.
class User(models.Model):
CRAWFORD = 'CR'
CARPENTER = 'CA'
NOTAPPLICABLE = 'NA'
HALL_CHOICES = (
(CRAWFORD, 'Crawford'),
(CARPENTER, 'Carpenter'),
(NOTAPPLICABLE, 'Not Applicable'),
)
hall = models.CharField(max_length=2,choices=HALL_CHOICES,default=NOTAPPLICABLE)
email = models.CharField(max_length=256)
password = models.CharField(max_length=32)
supervisor = models.ForeignKey('self',blank=True, null=True, default=None)
def __unicode__(self):
return self.email + " " + self.hall
最后:.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export PATH=$PATH:$HOME/bin:$HOME/virtual/lib/python2.7/site-packages/django/bin:$HOME/website/project
export PYTHONPATH=$PYTHONPATH:$HOME/virtual/lib/python2.7/site-packages:$HOME/website/project