0

私は HTML/CSS/JS を学び、それを使っていくつかの静的サイトを作成する練習をしました。オフラインだけで、サーバー/データベースはありません...今、djangoproject で Django のチュートリアルを完了しました (つまり、投票アプリを持っています)。この 2 つを組み合わせて Web サイトを作成する方法がわかりません。

Django テンプレートは次のようになります。

{% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

しかし、次のような django ページのソースを見ると: http://www.michael54.com/hallway

このテンプレートのように見えるものはありません。{% %} はありません

では... このテンプレートはページのどこに収まるのでしょうか?

ページを適切にまとめる方法を知りたいだけなので、基本的なフレームワークを知っていれば、そこから自分の能力を伸ばすことができます。今、私はどこから始めるべきかさえ知りません..

4

3 に答える 3

4

では... このテンプレートはページのどこに収まるのでしょうか?

テンプレです!

一般的な概念は、あなたのサイトにはおそらくタイトルバー、ナビゲーション、共通の css インクルードなど、すべて同じものを含む多数の html ページがあるということです。テンプレートメカニズムの概念は、新しいページが使用できるように基本テンプレートを提供することです。これは、コンテンツを埋めるために最小限の html のみを必要とします。

テンプレート エンジンのもう 1 つの側面は、データをフォーマットして表示するモデルを代用できることです。たとえば、ユーザー プロファイル ページがオブジェクトpersonに渡され、次のように出力される場合があります。

<p>Person's Name: {% person.name %}</p>

これはhtmlを生成します:

<p>Person's Name: Fred</p>

これにより、テンプレートがどのように処理されるかがわかります。テンプレートは、テンプレート プロセッサを介して渡されます。テンプレート プロセッサは、コンテンツを検索し{{{%タグ付けし、その内容に基づいて適切なアクションを実行します。

これはMVCの概念の一部です。このアーキテクチャでは、プロジェクトを 3 つの部分に分割します。モデル (データの、通常はこれらのオブジェクトを操作するロジックを含む)、コントローラー (Django ではビュー)、表示する内容を決定し、ビュー (Django ではテンプレート)、どのように表示するかを決定します。分離がプロジェクトのスケーリングに役立つという考えです。

モデルなしで Django プロジェクトを開始できます。必要なのは、HttpResponseオブジェクトを返すビューだけです。通常、これにはヘルパー関数render_to_responseを使用します。

于 2013-02-02T22:53:23.597 に答える
1

あなたが提示したコードのその部分は Django テンプレートです - Django はそれを単純な html コードにコンパイルします。

これらの{% %}マークは Django に対する指示にすぎないため、何かを実行する必要があることを認識します。つまり、ifステートメントをチェックするか、forループ内でコードを実行します。

このテンプレートをもう一度見てみましょう。

{% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

ここで、2 つのアイテムのリストが含まれていると仮定するlatest_poll_listと、Django テンプレート システムは上記のコードを次のようにコンパイルします。

    <ul>
        <li><a href="/polls/1/">Here is first poll's question</a></li>
        <li><a href="/polls/2/">Here is second poll's question</a></li>
    </ul>

latest_poll_listまたは、変数内にポーリングがない場合は、次のように表示されます。

<p>No polls are available.</p>

サーバー側のレンダリングについてもっと学ぶべきだと思いますが、推奨できるリソースはありません。

于 2013-02-02T23:02:15.433 に答える
0

(github) で Mezzanine A Django CMS のソースを調べて、css や JS などの静的ファイルがどのように配置されているか (ブートストラップを使用しますが、プリンシパルはカスタムと同じです) を確認できます。

于 2013-02-02T22:55:16.350 に答える