Форум сайта python.su
Что за настройка такая злая Debug.
Джанго использую 2 день, вникать во все тонкости не хочу, так как нужна быстрая реальзация простейшего функционала.
Делаем простейшую модель
class Tester(models.Model):
name = models.CharField(max_length=100)
class TesterForm(forms.ModelForm):
class Meta:
model = Tester
class TesterAdmin(admin.ModelAdmin):
list_display = ('name',)
admin.site.register(Tester, TesterAdmin)
Отредактировано (Март 26, 2010 17:26:44)
Офлайн
Вообще мистика какая-то . Добавил в папку templates два файла 404.html и 500.html стало кидать ошибку 404.
Я вообще перестал что либо понимать.
Повторяюсь с Debug=True все работает на отлично.
Может при Debug=True куданить лог пишется?
Как вообще понять в чем проблем?
registry - проект
validate - приложение
urls на уровне проекта
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^registry/', include('registry.validate.urls')),
(r'^admin/', include(admin.site.urls)),
)
from django.conf.urls.defaults import *
from registry.validate.views import res
urlpatterns = patterns('',
(r'^$', res),
)
Офлайн
Добью уже вопрос. У кого похожая проблема.
Смотрим http://code.djangoproject.com/ticket/11918
Меняем
(r'^admin/', include(admin.site.urls))
(r'admin/(.*)', admin.site.root)
Офлайн
Легко:
1. При Debug=False джанга при 404 ошибке пытается выдать шаблон 404.html из templates директории. Но если Вы этот шаблон не положили в templates директорию, то джанга выбрасывает 500 ошибку, поскольку внутри джанги не проверяется наличие данного шаблона - он тупо выдается.
2. admin.autodiscover() ВСЕГДА ищет наследников от admin.ModelAdmin в файле <app-root>/admin.py и никогда не смотрит файл models.py. Поэтому в Вашем случае admin.site.urls будут пустые, так как у Вас, как я понял, админский интерфейс прописан прямо в models.py
3. admin.site.root - это устаревший способ поднятия админки - вполне возможно, что он шарит и по models.py, но он ЕМНИП в 2.0 будет отменен и пока сохранен для обратной совместимости. Его пока можно использовать, если Вы не планируете добавлять в админку собственные страницы со специфической обработкой данных (они подключаются через admin.site.urls).
А в принципе прицепите к сайту логирование ошибок - сильно облегчит жизнь - там про все это должно быть написано.
Офлайн
ziroВопрос в том почему при Debug=True все работает на ура?
Легко:
1. При Debug=False джанга при 404 ошибке пытается выдать шаблон 404.html из templates директории. Но если Вы этот шаблон не положили в templates директорию, то джанга выбрасывает 500 ошибку, поскольку внутри джанги не проверяется наличие данного шаблона - он тупо выдается.
2. admin.autodiscover() ВСЕГДА ищет наследников от admin.ModelAdmin в файле <app-root>/admin.py и никогда не смотрит файл models.py. Поэтому в Вашем случае admin.site.urls будут пустые, так как у Вас, как я понял, админский интерфейс прописан прямо в models.py
3. admin.site.root - это устаревший способ поднятия админки - вполне возможно, что он шарит и по models.py, но он ЕМНИП в 2.0 будет отменен и пока сохранен для обратной совместимости. Его пока можно использовать, если Вы не планируете добавлять в админку собственные страницы со специфической обработкой данных (они подключаются через admin.site.urls).
А в принципе прицепите к сайту логирование ошибок - сильно облегчит жизнь - там про все это должно быть написано.
Отредактировано (Март 29, 2010 11:00:56)
Офлайн
При Debug=True джанга выводит трейсбэк в тексте ответа сервера и не использует шаблоны 404.html и 500.html - поэтому когда их нет все просто замечательно. А при Debug=False происходит ситуация описанная Вами.
Для логирования ошибок можно использовать разные варианты:
1. Штатно - при Debug=False вся информация об ошибках отсылается на почту, указанную в навстройках http://docs.djangoproject.com/en/dev/ref/settings/#admins Более подробно здесь - http://docs.djangoproject.com/en/dev/howto/error-reporting/#howto-error-reporting
2. При использовании mod_wsgi ошибки в лог апача пишутся из WSGI-переменной ‘wsgi.errors’. Их туда надо просто положить, например так: http://www.djangosnippets.org/snippets/1731/
3. Если запускаете через fastcgi - то там в параметрах для manage.py можно указать файл, куд писать все ошибки (ЕМНИП –error-log=xyz).
Офлайн
ziroБольшое спасибо за подробное объяснение.
При Debug=True джанга выводит трейсбэк в тексте ответа сервера и не использует шаблоны 404.html и 500.html - поэтому когда их нет все просто замечательно. А при Debug=False происходит ситуация описанная Вами.
Для логирования ошибок можно использовать разные варианты:
1. Штатно - при Debug=False вся информация об ошибках отсылается на почту, указанную в навстройках http://docs.djangoproject.com/en/dev/ref/settings/#admins Более подробно здесь - http://docs.djangoproject.com/en/dev/howto/error-reporting/#howto-error-reporting
2. При использовании mod_wsgi ошибки в лог апача пишутся из WSGI-переменной ‘wsgi.errors’. Их туда надо просто положить, например так: http://www.djangosnippets.org/snippets/1731/
3. Если запускаете через fastcgi - то там в параметрах для manage.py можно указать файл, куд писать все ошибки (ЕМНИП –error-log=xyz).
Офлайн
Нужно заполнить ALLOWED_HOSTS в settings.py.
Warning
If DEBUG is set to False, all responses will be “Bad Request (400)” unless you specify the proper ALLOWED_HOSTS as well (something like for local development).
Your text to link here…
Офлайн