Django 没有检测到 AngularJS

Posted

技术标签:

【中文标题】Django 没有检测到 AngularJS【英文标题】:Django not detecting AngularJS 【发布时间】:2016-10-21 22:01:03 【问题描述】:

我有一个 Django 项目(我使用 PyCharm IDE 创建的)。我有两个 html 文件,下面是我在这些文件中的代码。

-- header.html

<!DOCTYPE html>
<html lang="en" >
<head>
<title>This is my title</title>
<meta charset="UTF-8">
% load staticfiles %
<link rel="stylesheet" href="% static 'css/style.css' %" type="text/css"/>
<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
<script data-require="angular.js@*" data-semver="1.4.0-beta.6" src="https://code.angularjs.org/1.4.0-beta.6/angular.js"></script>
<script src="% static 'js/script.js' %"></script>

-- home.html

<html ng-app="myApp">
% extends "query/header.html" %
% block content %
 <p>Hey what's up</p>
    <select name="dropDown" ng-model="data.dropDown" >

        % for num in list %
            <option value="num">
             num 
            </option>
        % endfor %
    </select>
<p>You chose:  data.dropDown </p>
% endblock %
</html>

在我的home.html 中,我有一个使用&lt;select&gt;tag 创建并使用Python 列表填充的下拉列表。我在我的选择标签中使用ng-model 以获取用户在下拉列表中选择的内容并将其显示在下方,但由于某种原因,当我在下拉列表中选择一个选项时,它没有显示任何内容。

另外,在我的 PyCharm IDE 中,home.htmlng-appng-model 内被突出显示,我收到一条警告说 Attribute ng-app/ng-model is not allowed here

你能告诉我我在这里做错了什么吗?

【问题讨论】:

【参考方案1】:

让我们看看...

    在 header.html 中,您似乎没有定义 % block content %。如果没有定义,您的模板将无法继承任何内容。

    在 home.html 中有一个额外的 html 包装。你不需要它。事实上,除了导入之外,扩展标签应该是文件中的第一个内容。

    如果您打算添加像 this 这样的角度绑定,请确保将可绑定内容包装在 % verbatim % 标记中,因为 django 模板呈现使用相同的语法。

这样说,我会像这样修复你的模板:

标题:

% load staticfiles %
# PLEASE add template tags imports at the beginning of the file #
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
    <!-- PLEASE ACCURATELY INDENT YOUR CODE!!!! -->
    <!-- I hope you have myApp defined in js/script.js file -->
    <head>
        <title>This is my title</title>
        <meta charset="UTF-8" />
        <link rel="stylesheet" href="% static 'css/style.css' %" type="text/css"/>
        <link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
        <script data-require="angular.js@*" data-semver="1.4.0-beta.6" src="https://code.angularjs.org/1.4.0-beta.6/angular.js"></script>
        <script src="% static 'js/script.js' %"></script>
    <!-- PLEASE FOR GOD\'S SAKE MAKE A COMPLIANT HTML FILE!!!!!! I DONT KNOW WHAT IS THE REMAINING FILE BODY BUT I WILL ADD IT RIGHT NOW IN A MINIMALIST WAY -->
    </head>
    <body>
        % block content %% endblcok %
    </body>
</html>

主文件将是:

% extends "query/header.html" %
% block content %
    <p>Hey what's up</p>
    <select name="dropDown" ng-model="data.dropDown">
    % for num in list %
        <option value="num"> num </option>
    % endfor %
</select>
% verbatim %
<p>You chose:  data.dropDown </p>
% endverbatim %

【讨论】:

非常感谢您的解释和代码,现在可以完美运行了。

以上是关于Django 没有检测到 AngularJS的主要内容,如果未能解决你的问题,请参考以下文章

Django Channels 没有检测到 NGINX 的 WebSocket 请求

PyCharm没有检测到Django安装的应用程序

Django 1.8:删除迁移文件夹后未检测到迁移

Django:检测数据库后端

Django 迁移未检测到所有更改

未检测到 Django settings.py