我有一个应用程序在运行./manage.py runserver(甚至runserver_plus)时工作得非常好,但是当我将它部署到apache2 + wsgi实例时,它会中断。它尝试导入的第一个模型(UserProfile)似乎已将所请求的模块导入为NoneType。
所以,这样的模型(这不是确切的代码,我现在不能粘贴到公共网站上):
from django.db import models
from django.contrib.auth.models import User
from BlogEngine.categorisation.models import Category
from django.db.models.signals import post_save
from django.conf import settings
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import ugettext as _
import logging
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
category = models.ManyToManyField(Category, blank=True, related_name="category")
def __unicode__(self):
return "Profile for %s" % user.username
def update_categories(self):
"""Updates the categories list"""
pull_more = self.category_selection_max - self.category.count()
if pull_more == 0:
return self.category_selection
logging.debug("Drawing %s categories" % draw)
categories = Category.objects.filter(
is_live=True
).order_by("?")[:pull_more]
## More code under here ##
返回:
'NoneType'对象没有属性'debug'
在行logging.debug(“绘制%s类别”%绘图)
评论结果导致获得
'NoneType'对象没有属性'objects'
在它下面的线上,依此类推。一切都肯定是导入的,它在开发服务器下工作正常。
我的WSGI文件是:
import sys
import site
import os
vepath = '/home/aquarion/newsite/django/virtualenv/lib/python2.6/site-packages'
#prev_sys_path = list(sys.path)
## add the site-packages of our virtualenv as a site dir
site.addsitedir(vepath)
## add the app's directory to the PYTHONPATH
sys.path.append('/home/aquarion/newsite/django/')
# import from down here to pull in possible virtualenv django install
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'BlogEngine.settings'
application = WSGIHandler()
有什么想法吗?
答案 0 :(得分:0)
解决了它。
不确定这是否是某些内容中的错误,但最终导致使用django的用户个人资料以及models.py文件中的管理员模型信息。一旦我将所有内容都移到了自己的admin.py文件中,一切正常。
仍然不确定究竟是什么原因引起的,但这就是解决方案。
(通过http://osdir.com/ml/DjangoUsers/2009-07/msg00090.html及其回复达成的解决方案)