2012-01-30 2 views
0

나는 여기에 기본 개념이 빠져 있다고 생각한다. 하나의 콘텐츠를 제공하고, 다른 하나는 프리젠 테이션을 제공하는 말 -두 앱이 장고의 동일한 URL에 어떻게 반응합니까?

http://localhost/myproj/app1/33 
http://localhost/myproj/app2/newcomment.html 

그러나 메커니즘은 두 개의 애플 리케이션을 보완 경우를 처리하기 위해 존재합니다 박힌 장고 프로젝트에서 두 개의 응용 프로그램이 다른 URL에 응답 거라고? 또는 하나는 콘텐츠이고 다른 하나는 모든 페이지에 표시되어야하는 정적 인 측면 콘텐츠입니다.

특히, 두 앱이 템플릿 상속을 사용하여 동일한 템플릿을 확장하는 방법을 이해할 수 없습니다.

{% extends "baseapp/templates/base.html" %} 

{% block content %} 
<div class="banner">Please support our site!</div> 
{{ block.super }} 
{% endblock %} 

:

{% extends "baseapp/templates/base.html" %} 

{% block content %} 
... here's the actual content... 
{% endblock %} 

앱 2 작은 배너 또는 무언가를 추가

... 
<div blah blah> 
{% block content %} 
{% endblock %} 
... 

앱 1 그것을 확장 : 기본 응용 프로그램 "baseapp은"템플릿 "base.html"로 거기 상상 그렇다면 두 템플리트를 모두 표시하는 방법은 무엇입니까? 내가 생각할 수 있습니다 :

  1. app1 app2의 템플릿을 확장 할 수 있습니다. 하지만 이것은 잘못되었습니다. app1은 콘텐츠 제공 업체이므로 app2와 같이 사소한 것에 의존해서는 안됩니다.
  2. app2는 app1의 템플릿을 확장 할 수 있습니다. 그러나 이것은 틀린 것 같습니다 : 이제 URL 스키마는 app2를 통해 모든 URL을 퍼널해야합니다 (정확하게 이해할 경우)
  3. 미들웨어가 있습니까?

내가 말했던 것처럼, 나는 아마도 매우 기본적인 것을 놓치고있을 것이다. 아니면 내가 모르는 매우 잘못된 가정을하고 있습니다. 이 질문은 Embed an optional Django application in another page, if that app is presentHow to capture and display information external to my webapp, but relevant to users of it? 이후의 세 번째 시도입니다. 문제가 프레임에 문제가 있습니다.)

+0

두 번째 응용 프로그램 템플릿 태그는이; 이것이 첫 번째 시도에서 제안 된 것입니다. –

+0

Ok - 자세히 살펴 보겠습니다. –

답변

0

나는 내가 실제로 여기 없어진 어떻게 생각 :

  • 앱이 딱 맞는 하위 디렉토리에 적절한 이름의 템플릿을 포함하여 템플릿을 정의 할 수 있습니다. Django 문서는 다음과 같이 매우 명확하게 보이지는 않습니다. Admin 템플리트의 문맥에서이 기능을 참조합니다.
  • 위와 같이 템플리트를 겹쳐 쓸 때 확장 할 수 없지만 다음을 확장 할 수는 없습니다.
  • This http://djangosnippets.org/snippets/1376/

을 여기에 밀접하게 관련 질문 : 조각은 모두 템플릿을 무시하고 그것을 확장 할 수 Django: Overriding AND extending an app template

2

응용 프로그램이 URL에 응답하지 않는 경우보기가 수행됩니다. 보기는 모든 응용 프로그램의 모델, 양식 및 기타 객체를 사용할 수있는 기능입니다. 여기에는 아무런 문제가 없습니다.

템플릿에 무언가를 추가하려면 상속 만이 유일한 방법은 아닙니다. 맞춤 context processor 또는 맞춤 template tag을 사용하는 것이 좋습니다.

+0

처음 문장과 정확히 똑같이 올리려고했습니다 :-) –

+0

괜찮 았지만 앱에는 일반적으로 views.py가 포함되어 있습니까? "아무런 문제가 없다"고 말할 때, 유지 보수성, 상호 운용성 및 대부분 관련이없는 문제들 사이의 의존도를 줄이는 것과 같은 문제들을 생각하고 있습니다. –

+0

@SteveBennett 특히 문제는 컨텍스트 프로세서/템플릿 태그를 사용하여 해결됩니다. (일반적으로) 앱을 느슨하게 결합하려면 앱을 연결하는 다른 앱을 만드십시오. 나는 실제로이 문제를 한 번도 경험하지 못했습니다. – DrTyrsa

관련 문제