在Apache/mod_wsgi上运行Django时出错

2 投票
5 回答
2641 浏览
提问于 2025-04-15 13:16

最近我在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 个回答

0

试试用 manage.py syncdb 这个命令,看看 Django 能否连接上数据库,并且确保所有的表都已经创建好了。

1

我解决这个问题的方法是把sqlite3的二进制文件目录添加到PYTHONPATH环境变量里。

6

你现在没有数据库。为什么你没有sqlite3驱动也不太清楚。不过可以确定的是,你没有sqlite3,也没有数据库。

  1. 运行manage.py syncdb来建立数据库。

    • 确保使用的settings.py文件和你生产环境中的一致。

    • 确保你的settings.py文件里有正确的驱动。你在用SQLite3,确保使用的是绝对路径。

    • 确保使用的PYTHONPATH和工作目录和生产环境一样,这样才能找到所有的模块。

  2. 运行普通的SQL语句,看看你是否真的建立了数据库。

  3. 运行Django的/admin应用,查看数据库里有什么内容。

SQLite3是Python自带的。如果缺少它,说明你的Python安装可能有问题或者不完整。建议重新安装一次。

撰写回答