在Apache/mod_wsgi上运行Django时出错
最近我在StackOverflow上问了一个关于apache/mod_wsgi无法识别python脚本目录的错误问题。社区的朋友们热心地回答了我的问题,最终让我成功安装了。现在我遇到了另一个错误,服务器的守护进程(严格说是一个Windows服务,我说西红柿你说番茄……)找不到任何模型,下面是完整的错误追踪信息:
环境:
Request Method: GET
Request URL: `http://localhost/polls/`
Django Version: 1.0.2 final
Python Version: 2.6.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'mysite.polls']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware')
模板错误:
在模板 c:\users\marcos\documents\djangotemplates\polls\poll_
list.html 的第1行
渲染时捕获到异常:没有这样的表:polls_poll
1 : {% if object_list %} 2 : <ul> 3 : {% for poll in object_list %} 4 : <li> <a href="{{poll.id}}/">{{ poll.question }} </a> </li> 5 : {% endfor %} 6 : </ul> 7 : {% else %} 8 : <p>No polls are available.</p> 9 : {% endif %} 10 :
错误追踪:
File "C:\Python26\lib\site-packages\django\core\handlers\base.py" in get_response 86. response = callback(request, *callback_args, **callback_kwargs) File "C:\Python26\lib\site-packages\django\views\generic\list_detail.py" in object_list 101. return HttpResponse(t.render(c), mimetype=mimetype) File "C:\Python26\lib\site-packages\django\template\__init__.py" in render 176. return self.nodelist.render(context) File "C:\Python26\lib\site-packages\django\template\__init__.py" in render 768. bits.append(self.render_node(node, context)) File "C:\Python26\lib\site-packages\django\template\debug.py" in render_node 81. raise wrapped
Exception Type: TemplateSyntaxError at /polls/
Exception Value: Caught an exception while rendering: no such table: polls_poll
有人建议我使用 manage.py dbshell,结果脚本回应说:
错误:你似乎没有安装 'sqlite3' 程序,或者它不在你的路径中。
但即便如此,Django的runserver还是能完美运行这个应用。我不明白环境中发生了什么变化,竟然让这个网页应用出了这么大的问题。请帮帮我!
5 个回答
试试用 manage.py syncdb 这个命令,看看 Django 能否连接上数据库,并且确保所有的表都已经创建好了。
我解决这个问题的方法是把sqlite3的二进制文件目录添加到PYTHONPATH环境变量里。
你现在没有数据库。为什么你没有sqlite3驱动也不太清楚。不过可以确定的是,你没有sqlite3,也没有数据库。
运行manage.py syncdb来建立数据库。
确保使用的
settings.py
文件和你生产环境中的一致。确保你的
settings.py
文件里有正确的驱动。你在用SQLite3,确保使用的是绝对路径。确保使用的
PYTHONPATH
和工作目录和生产环境一样,这样才能找到所有的模块。
运行普通的SQL语句,看看你是否真的建立了数据库。
运行Django的
/admin
应用,查看数据库里有什么内容。
SQLite3是Python自带的。如果缺少它,说明你的Python安装可能有问题或者不完整。建议重新安装一次。