0

我学习了 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

没有什么看起来像这个模板,没有 {% %}

所以... 这个模板适合页面的什么位置?

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

4

3 回答 3

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为此使用辅助函数。

于 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 %}

现在,假设您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>

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

于 2013-02-02T23:02:15.433 回答
0

您可以查看 (github) 上 Mezzanine A Django CMS 的源代码,了解 css 和 JS 等静态文件的排列方式(它使用引导程序,但主体)对于自定义是相同的

于 2013-02-02T22:55:16.350 回答