1

나는 장고 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 
+0

예외가 발생하는 경우 발생 오류 페이지가 나타나거나 여전히 페이지가 렌더링됩니까? 그것은 두 번째 선택의 어쩌면 그리고 난 그냥 추측 그 장고 캐시 (당연히 하나를 사용하는 경우) 캐시에서 템플릿을 찾지 못할 때이 오류를 던질 수 있습니다 (때문에 캐시 시간 초과 또는 무엇 그래서 항상) 파일 시스템에서 템플릿을 가져와 렌더링하면 작동하지만 캐시 미스로 인해 오류가 표시됩니다. – mouad

+0

좀 더 정교한 역 추적을 해 주시겠습니까? – pyeleven

+0

예외가 발생하면 응용 프로그램이 충돌하고 내 서버에 기본 500 내부 서버 오류 페이지가 표시됩니다. 그것은 템플릿 디렉토리를 찾을 수 없기 때문에 정상적인 django 500.html 페이지를 제공하지 않습니다. – Spike

답변

0

가 나는 템플릿 디렉토리 경로를 교환 관여하는 논리를 모두 제거,이 문제를 해결하려면 다음

여기 내 역 추적입니다. 내 생각 엔 시스템에 대한 파이썬 경로가 변경 될 때 다른 동시 요청이 때로는 잘못된 파이썬 경로 집합을 보게되는 것입니다.

따라서 모바일 사이트와 일반 사이트에 템플릿 디렉토리에 대한 동일한 경로에 대한 액세스 권한을 부여하고 동일한 이름의 충돌 템플릿이 없는지 확인했습니다.