Ошибка в Django, работающем на Apache / mod_wsgi - PullRequest
1 голос
/ 30 июля 2009

Недавно я задал вопрос об ошибке в 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 :   

Traceback:

    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 прекрасно запускает приложение. Я не вижу, что изменилось в среде, чтобы так сильно затянуть веб-приложение. Пожалуйста, помогите!

Ответы [ 5 ]

6 голосов
/ 30 июля 2009

У вас нет базы данных. Непонятно, почему у вас нет драйвера sqlite3. Однако у вас нет sqlite3 и у вас нет базы данных.

  1. Запустите manage.py syncdb, чтобы построить базу данных.

    • Обязательно используйте тот же settings.py, что и ваш производственный экземпляр.

    • Убедитесь, что ваш settings.py имеет правильный драйвер. Вы используете SQLite3, убедитесь, что используется абсолютный путь.

    • Обязательно используйте тот же PYTHONPATH и рабочий каталог, что и рабочий, чтобы убедиться, что все модули действительно найдены

  2. Запустите обычный SQL, чтобы убедиться, что вы действительно создали базу данных.

  3. Запустите приложение Django /admin, чтобы увидеть, что находится в базе данных.

SQLite3 входит в состав Python. Чтобы он отсутствовал, ваша установка Python должна быть повреждена или не завершена. Переустановите с нуля.

1 голос
/ 30 июля 2009

Я решил проблему с добавлением каталога двоичных файлов sqlite3 в переменную среды PYTHONPATH.

0 голосов
/ 15 января 2012

Ничего из этого не было для меня правильным, когда я пытался запустить manage.py dbshell, но потом, спустя 3 года, и я на 10.7. Я добавил свой путь mysql в переменную PATH следующим образом:

PATH = $ PATH: /usr/local/mysql-5.5.16-osx10.6-x86_64/bin

На самом деле, лучше поместить это в файл .profile. В Mac OS 10.7 вам, вероятно, придется создать один из них, если вы еще этого не сделали. В окне терминала просто введите cd, затем нажмите return, чтобы вернуться в свой домашний каталог, затем выполните vi .profile, чтобы создать новый файл, и вставьте:

экспорт PATH = $ PATH: /usr/local/mysql-5.5.16-osx10.6-x86_64/bin

Я даю здесь много подробностей для людей, которые не знают всего этого, как я. При следующем входе ваш путь будет установлен автоматически. Чтобы установить его из файла .profile, просто выполните:

. ./.profile

Чтобы проверить новую переменную PATH, сделайте следующее:

echo $ PATH

0 голосов
/ 03 октября 2009

Только что исправил подобную проблему. Я думаю, что вы должны добавить имя своего приложения в список INSTALLED_APPS в settings.py.

0 голосов
/ 30 июля 2009

Попробуйте manage.py syncdb , чтобы убедиться, что django может подключиться к базе данных и что все таблицы созданы.

...