Django无法找到角度文件

时间:2015-07-10 09:25:01

标签: django django-staticfiles

我有以下html文件

<html>
<head>
  {% load staticfiles %}
  <script type="text/javascript" src="{% static "app.js" %}"/></script>
  <title>Flapper News</title>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
</head>
{% verbatim foo %}
<body ng-app="flapperNews" ng-controller="MainCtrl">
  <div>

    <div ng-repeat="post in posts | orderBy:'-upvotes'">
      <span ng-click="incrementUpvotes(post)">^</span>
      <a ng-show="post.link" href="{{post.link}}">
        {{post.title}}
      </a>
      <span ng-hide="post.link">
        {{post.title}}
      </span>
      - upvotes: {{post.upvotes}}
    </div>

    <form ng-submit="addPost()">
      <input type="text" placeholder="Title" ng-model="title"></input>
      <br>
      <input type="text" placeholder="Link" ng-model="link"></input>
      <br>
      <button type="submit">Post</button>
    </form>
  </div>
</body>
{% endverbatim foo %}
</html>

这是我的angularjs文件

'use strict'

angular.module('flapperNews', ['ngRoute'])
.controller('MainCtrl', [
'$scope',
function($scope){
  $scope.test = 'Hello world!';

  $scope.posts = [];

  $scope.addPost = function(){
    if($scope.title === '') { return; }
    $scope.posts.push({
      title: $scope.title,
      link: $scope.link,
      upvotes: 0
    });
    $scope.title = '';
    $scope.link = '';
  };

  $scope.incrementUpvotes = function(post) {
    post.upvotes += 1;
  };

}]);

模板位于mysite / templates中,角度文件位于mysite / static中。当我查看开发服务器时,我在请求页面时收到以下输出:

[10/Jul/2015 09:23:09]"GET /guides/ HTTP/1.1" 200 861
[10/Jul/2015 09:23:09]"GET /static/app.js HTTP/1.1" 404 1632

当我从firefox查看开发人员控制台时,我收到一个错误:[$ injector:modulerr]。你们知道为什么我的app.js的使用不起作用吗?

编辑:settings.py中的静态文件

STATIC_URL = '/static/'

STATIC_ROOT = '/home/ubuntu/mysite/static/'

1 个答案:

答案 0 :(得分:1)

您可能应该在项目设置中设置STATICFILES_DIRS。这应该可以解决问题:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

仅设置STATIC_URL(这是您将为静态文件提供的URL)和STATIC_ROOT是不够的(这是您的应用程序将存储的服务器/系统上的位置运行manage.py collectstatic)时的静态文件。

默认情况下,django使用AppDirectoriesFinder(搜索app目录中的静态文件)和FileSystemFinder(搜索STATICFILES_DIRS中的目录)

如果静态文件设置仍然不明确,请查看documentation