2

私は自分のウェブサイトでdjangoを学ぶためにdjangoプロジェクトを開始しました。これまでのところ、必要なものがすべて揃った開発環境を用意し、このすばらしいチュートリアルに従って、いくつかの基本的なデータ構造とテンプレートを作成しました。ここで、以前に作成したhtmlレイアウトの使用を開始し、それに機能を実装し始めたいと思います。しかし、私はこれを達成する方法を理解するのに苦労しています。

私はこれまでほとんどJavaポータルソリューションを実行しており、サーバーを起動し、いくつかのページを作成し、それらのテーマを設定してから、必要な場所にカスタムポートレット(機能/コード)を追加できました。djangoでは、HTMLレイアウトを使用してビューを作成しましたが、正常に機能します。ただし、ページの処理方法がわかりません。URLとビューの構成ごとに個別のビューを作成してから、ページごとに同じhtmlレイアウトを使用し、必要に応じて異なる機能のみを設定する必要がありますか?少ないほど多いので、ジャンゴのようには見えません。ビューを何らかの形でポートレットのように使用して、それらが何らかのページ(ビュー自体ですか?)の一部になるようにすることができると思いますか?ページの特定の部分での投票のように。どのように?

たとえば、特定の「テーマ」(html-layout)と、おそらく最新のブログ投稿があるフロントページが必要です。次に、同じ「テーマ」とダウンロード可能なコンテンツのリストがあるリソースという名前の別のページ。当然、ページを切り替えるためのレイアウトのどこかにあるナビゲーション。

誰かが私を正しい方向に向けることができれば、私は大いに義務づけられるでしょう!

4

1 に答える 1

4

これは、Djangoテンプレートの継承を使用して行うことができます。「ホーム」テンプレートを作成{% 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>

およびblog-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))

詳細については、ドキュメントをお読みください:Djangoテンプレート言語

于 2012-08-02T16:16:23.193 に答える