2012-08-02 2 views
2

장고를 배우기 위해 개인 웹 사이트 용 장고 프로젝트를 시작했습니다. 지금까지 필요한 모든 것을 가지고 개발 환경을 설정했고, 기본 데이터 구조와 템플릿을 만들기 위해 this 위대한 튜토리얼을 따라갔습니다. 이제는 전에 만든 html 레이아웃을 사용하고 기능 구현을 시작하겠습니다. 그러나 나는 이것을 성취하는 방법을 이해하는 데 어려움을 겪고있다.django 웹 사이트 구성 방법 및 django 구조 페이지 구성 방법

나는 서버를 시작하고, 페이지를 만들고, 내 테마를 설정하고, 내가 원할 때마다 사용자 정의 포틀릿 (기능/코드)을 추가하기 전에 대부분 자바 포털 솔루션을 수행했다. django에서 html 레이아웃으로 뷰를 만들었고 정상적으로 작동합니다. 그러나 나는 어떻게 페이지를 다루어야하는지 이해하지 못한다. url과 view configs 각각에 대해 별도의보기를 만든 다음 각 페이지에 동일한 html 레이아웃을 사용하고 필요한 경우에만 다른 기능을 설정해야합니까? 더 적은 것이 있기 때문에 장고 방식처럼 보이지 않습니다. 나는 뷰를 포틀릿과 같이 어떻게 든 사용하여 일부 페이지 (뷰 자체입니까?)의 일부인 뷰를 사용할 수 있다고 생각합니다. 한 페이지의 특정 부분에서의 설문 조사처럼. 방법?

예를 들어, 특정 "테마"(html 레이아웃)와 어쩌면 최신 블로그 게시물을 가지고있는 FrontPage를 갖고 싶습니다. 그런 다음 동일한 "테마"와 다운로드 할 수있는 콘텐츠 목록이있는 다른 페이지에 리소스를 지정합니다. 당연히 레이아웃 어딘가에 페이지 사이를 전환하는 탐색.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 많은 의무가 있습니다!

답변

4

장고 템플릿 상속을 사용하여이를 수행 할 수 있습니다. "집"템플릿을 작성하고 {% block content %}{% endblock %}을 사용하여 블로그 게시 위치를 정의합니다. 별도의 HTML 파일 인 블로그 게시물을 표시 할 템플릿에서 {%extends "home.html"%}과 동일한 {% block content %}{% endblock %}을 입력하고 {% block content %}{% endblock %} 안에 블로그 게시물에 대한 HTML 코드를 넣습니다.

Django가 홈페이지를로드하면 다른 템플릿에서 "content"라는 블록이있는 곳을 찾고 블로그 내부에있는 내용 (여기서는 블로그 게시물)을로드합니다.

내가 당신에게 약간의 예를 보여 드리죠 :

home.html을

<title>Home</title> 
<head> 
<style type="text/css"> 
    .content-wrapper{ 
     text-decoration:none; 
    border: 1px none; 
     height: 50%; 
     left: 0%; 
     position: relative; 
     top: 8%; 
     width: 100%; 
     height: 100%; 
     z-index: 0; 
    } 
</style> 
</head> 
<body> 
<div class="content-wrapper"> 
{% block content %}{% endblock %} 
    </div> 
</body> 

및 블로그 posts.html

{%extends "home.html"%} 
<head>PUT HERE ALL THE CSS STYLESHEETS YOU'LL BE USING AND PUT THEM ALSO IN HOME.HTML</head> 
<body> 
    {%block content%} 
     HTML FOR YOUR BLOG POSTS 
    {%endblock%} 
</body> 

별도의 템플릿을해야 할 것이 방법을하지만, 훨씬 적은 코드를 수행 할 것입니다. 그리고 당신은 urls.py에서 그들을 가리켜 야 할 것입니다. 왜냐하면 그것들은 프레임과 거의 비슷한 행동을하기 때문입니다.

urls.py

urlpatterns = patterns('', 
url(r'^blog-posts/','Mod031.views.blog-posts'), 
    url(r'^home/', 'Mod031.views.home', name='home'), 
) 

당신은 또한, 뷰는, 워드 프로세서 읽어 보시기 바랍니다 자세한 내용

def home (request): 
return render_to_response('home.html', context_instance=RequestContext(request)) 

def blog-posts(request): 
return render_to_response('blog-posts.html', context_instance=RequestContext(request)) 

해야하는 각 템플릿로드해야합니다 : The Django template language

+0

감사를 당신은 철저한 대답을 위해 대단히 감사합니다! 비록 그것이 지금 모두 명백하게 보인다해도 어떻게 든 나는 단지 전체 그림을 여기에서 보지 못했다. urls.py 및보기를 사용하는 것보다 다른 방법으로 페이지를 관리 할 수있는 방법이 있었으면합니다.py configs와 같이 예를 들어 일반 사용자가 블로그 게시물과 같은 기능을 사용하는 간단한 페이지를 만들 수있는 사이트를 만들려면 관리자 패널을 사용하거나 그렇게 할 수 있습니다. 어쩌면 누군가가 이미 그러한 애드온을 만들었을 것입니다. 그러나 나는 템플릿 시스템으로 완벽하게 잘되어 이제는 이해해 주셔서 감사합니다! – Artsu

+0

오, 기꺼이 도와 드리겠습니다! 나는 대답을 보낸 후에 그것에 대해 조금 더 생각하고있었습니다. 메뉴와 같이 링크와 연결하려는 경우 각 템플릿에 대해 하나의보기 만 필요합니다. 메뉴에서 옵션을 클릭하면, 그 옵션은 이전에 언급 한 내용 블록 내부에서 렌더링 될 하위 템플릿으로 이어질 'a href'를 갖게됩니다. –