나는 장고 1.2.5를 Python 2.7/mod_wsgi 3.3을 사용하여 실행중인 Django 사이트를 운영하고 있습니다. 대부분의 경우 모든 것이 훌륭하게 작동하지만 사이트에서 무작위로 오류를 던지고있는 것으로 보입니다. 그들은 형태로 모든 최종 :임의의 장고 TemplateDoesNotExist 오류
TemplateDoesNotExist : XXX
나는 URL이 항상 작동하는 것 같다 예외를 발생시킨 URL에 입력 할 때 이러한 템플릿이 확실히 존재하고 않는다. 그러나 약 30 페이지 뷰마다 한 번이 오류가 발생합니다.
비슷한 문제에 대한이 게시물을 발견 : http://leequerv.blogspot.com/2009/11/re-settingspy-seems-to-be-cached-or_24.html하지만 직접 적용되지 않는 것 같아 하나만 장고 응용 프로그램을 실행하고 있습니다.
내 사이트의 하위 도메인에 따라 템플릿 디렉토리를 바꿔주는 하위 도메인 미들웨어를 사용하고 있습니다. 즉, 하위 도메인이없는 경우 일반 템플릿 디렉토리를 사용하고 m.xxx 하위 도메인이있는 경우 내 모바일 템플릿 디렉토리를 사용합니다. . 이 모든 것은 위의 프로덕션 서버 오류를 제외하고 내 dev 서버와 프로덕션 서버 모두에서 훌륭하게 작동합니다. 많은 사람들이 사이트를 사용할 때 이것이 경쟁 조건을 만들 수 있습니까?
어떤 원인이 될 수 있으며 어디서부터 살펴 봐야할까요?
편집 : 여기
subdomain = getattr(request, 'subdomain', False) if subdomain is not False: try: request.urlconf = settings.SUBDOMAIN_URLCONFS[subdomain] except KeyError: pass try: settings.TEMPLATE_DIRS = settings.SUBDOMAIN_TEMPLATE_DIRS[subdomain] except KeyError: pass
템플릿을 디렉토리 정보를 보유하고 내 설정 파일의 일부입니다 : 여기
템플릿 디렉토리가 전환 미들웨어 코드의 일부이다
SUBDOMAIN_URLCONFS = { None: 'my_site.urls', 'm': 'mobile.urls' }
JQM_TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, "templates/mobile/"),
)
SUBDOMAIN_TEMPLATE_DIRS = {
None: TEMPLATE_DIRS,
'm': JQM_TEMPLATE_DIRS
}
편집 # 2 :
Traceback (most recent call last):
File "/home/my_username/webapps/my_site/lib/python2.7/django/core/handlers/base.py", line 100, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/my_username/python-environments/my_site/lib/python2.7/site-packages/endless_pagination/decorators.py", line 55, in decorated
return view(request, *args, **kwargs)
File "/home/my_username/webapps/my_site/my_site/local_apps/team/views.py", line 68, in team_detail
return render_to_response(template, context, context_instance=RequestContext(request))
File "/home/my_username/webapps/my_site/lib/python2.7/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 181, in render_to_string
t = get_template(template_name)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 157, in get_template
template, origin = find_template(template_name)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: team_detail.html
예외가 발생하는 경우 발생 오류 페이지가 나타나거나 여전히 페이지가 렌더링됩니까? 그것은 두 번째 선택의 어쩌면 그리고 난 그냥 추측 그 장고 캐시 (당연히 하나를 사용하는 경우) 캐시에서 템플릿을 찾지 못할 때이 오류를 던질 수 있습니다 (때문에 캐시 시간 초과 또는 무엇 그래서 항상) 파일 시스템에서 템플릿을 가져와 렌더링하면 작동하지만 캐시 미스로 인해 오류가 표시됩니다. – mouad
좀 더 정교한 역 추적을 해 주시겠습니까? – pyeleven
예외가 발생하면 응용 프로그램이 충돌하고 내 서버에 기본 500 내부 서버 오류 페이지가 표시됩니다. 그것은 템플릿 디렉토리를 찾을 수 없기 때문에 정상적인 django 500.html 페이지를 제공하지 않습니다. – Spike