Django 和静态网站

Posted

技术标签:

【中文标题】Django 和静态网站【英文标题】:Django and static website 【发布时间】:2013-12-21 20:30:30 【问题描述】:

嘿,我对 Django 框架很陌生。 我选择 Django 作为我的后端框架和 angular.js 作为我的前端框架。 我已经建立了自己的网站(仅限静态文件:css.htmljavascript) 我有几个主要问题:

    在我的 url 的路由管理中,我可以只重定向到 index.html 并从那里所有路由将在客户端自动处理。这意味着我只需要在 django 视图中编写 python 代码吗?如果是这样,代码是什么? 是这样的吗:

    urlpatterns = 模式('', url(r'^$', views.index, name='index'),)

    angular.js 框架是否存在与 django 框架相关的问题,我需要了解哪些问题? 例如,我看到 django 模板在 html 代码中使用大括号,angular.js 也使用了大括号。

【问题讨论】:

我做到了:我改写了 2。 【参考方案1】:
    是的,你可以,而且你做到了。从您的代码中,Django 仅处理“/”网址。除了确保您在前端有路由器代码。 如果您不使用 Django 模板,一切都会好起来的。如果在同一个文件中使用 Django 模板和 AngularJS,很容易导致冲突(Django 模板和 AngularJS 都使用“”语法)。也许你可以阅读这个项目:django-angular

【讨论】:

最后一个问题:您在客户端代码中说路由器代码是什么意思?我的 index.html 中有一个指向另一个 main.html 的链接,从那里我使用 angular.js 将我的 url 处理为 ngviews @Brk 我所说的只是意味着您必须在前端维护您的路由器表。这可以被认为是为你使用 ngRouter【参考方案2】:

Angular 和 Django 可以很好地配合。

通常,您有一个 url(您的主页),您的 Angular 应用程序所在的位置。从那时起,如果您愿意,其余的路由将由 Angular 处理。

要为您的应用加载数据,您可能希望向 /ajax/ 端点发出 ajax 请求,您需要为此编写返回 json 的 Django 视图。

特别针对 2:如果您在模板中使用 Angular 变量(即: myvar ),您需要将它们包装在 % verbatim % 中,否则 Django 将在页面初始加载时尝试呈现它们,例如:

% verbatim %
    <!-- django does not try to render this now -->
    <div> angular_var </div>
% endverbatim %

希望对您有所帮助, 亚伦

【讨论】:

好的,如果我将它们包装在 % verbatim % 中,angular.js 会识别它们吗?我对 angular.js(also) 还是很陌生,我知道只有 有效... 是的,如果您不使用% verbatim %,django 将尝试渲染变量并静默失败,因为它们不会在您的上下文中。使用 % verbatim % 将告诉 django 单独留下 大括号,以便 angular 可以使用它们。 好的,我第二次阅读了你的答案,现在我明白你的意思了:)谢谢你解决了我的第二个问题。

以上是关于Django 和静态网站的主要内容,如果未能解决你的问题,请参考以下文章

Django 静态文件

使用django-compressor压缩静态文件

Django+uWSGI+Nginx 部署网站

将联系表添加到静态网站 [关闭]

我的 Django 网站正在加载我的静态 (CSS) 文件,但它们没有显示出来。我错过了啥或做错了啥?

django