如何使用Django建立网站?

时间:2013-02-02 22:45:41

标签: django

我学习了HTML / CSS / JS并练习了一些静态站点,只是离线,没有服务器/数据库......现在,我已经在djangoproject上完成了Django的教程(所以我有一个民意调查应用程序),但我不确定如何将两者混合成一个网站。

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

没有任何内容看起来像这个模板,没有{%}}

那么......这个模板在哪里适合页面?

我只是想看看我是如何正确地组合一个页面,所以我知道基本框架然后我可以从那里发展我的能力。现在,我甚至不知道从哪里开始......

3 个答案:

答案 0 :(得分:4)

  

那么......这个模板在哪里适合页面?

这是一个模板!

一般的概念是你的网站可能有许多html页面都包含相同的东西 - 标题栏,导航,常见的css包括等。模板机制的概念是提供一个基本模板,以便新的页面可以使用它,只需要最少的html来填充内容。

模板引擎的另一面是您可以在模型中替换格式化和显示数据。例如,用户配置文件页面可能会传入对象person,您可能会输出:

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

哪会产生html:

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

这让我了解了如何处理模板。模板通过模板处理器传递 - 模板处理器查找{{{%标签,并根据其内容执行相应的操作。

这是MVC概念的一部分。在这个体系结构中,您将项目分为三个部分 - 模型(数据,通常包括操作这些对象的逻辑),控制器(在Django中,这些是视图),它们决定了要显示的内容和视图(在Django,模板中),它决定了如何显示它。这个想法是分离帮助扩展项目。

您可以在没有模型的情况下启动Django项目 - 您只需要一个返回HttpResponse对象的视图。通常你会使用辅助函数render_to_response

答案 1 :(得分: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 %}

现在,假设您的latest_poll_list包含2个项目的列表,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>

我相信您应该了解有关服务器端渲染的更多信息,但我不能推荐任何资源。

答案 2 :(得分:0)

您可以在(github)上查看Mezzanine A Django CMS的来源,看看如何安排像css和JS这样的静态文件(它使用bootstrap但是主体)对于自定义是一样的