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

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

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

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

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

【问题讨论】:

  • 我做到了:我改写了 2。

标签: javascript css django html angularjs


【解决方案1】:
  1. 是的,你可以,而且你做到了。从您的代码中,Django 仅处理“/”网址。除了确保您在前端有路由器代码。
  2. 如果您不使用 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 可以使用它们。
  • 好的,我第二次阅读了你的答案,现在我明白你的意思了:)谢谢你解决了我的第二个问题。
猜你喜欢
  • 2015-09-07
  • 2017-01-12
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2019-12-22
  • 2015-02-19
相关资源
最近更新 更多