Django 找不到 angular 文件
Django can't find angular file
我有以下 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,angular 文件位于 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/'
可能您应该在项目设置中设置 STATICFILES_DIRS
。这应该可以解决问题:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
仅设置 STATIC_URL
(this is the url you will be serving the static files) and STATIC_ROOT
是不够的(这是您 server/system 上的位置,当您 运行 manage.py collectstatic
时,您的应用程序将存储静态文件) .
默认情况下,django 使用 AppDirectoriesFinder
(在应用程序目录中搜索静态文件)和 FileSystemFinder
(在 STATICFILES_DIRS
中搜索目录)搜索静态文件
如果静态文件设置还不清楚,看一下documentation。
我有以下 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,angular 文件位于 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/'
可能您应该在项目设置中设置 STATICFILES_DIRS
。这应该可以解决问题:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
仅设置 STATIC_URL
(this is the url you will be serving the static files) and STATIC_ROOT
是不够的(这是您 server/system 上的位置,当您 运行 manage.py collectstatic
时,您的应用程序将存储静态文件) .
默认情况下,django 使用 AppDirectoriesFinder
(在应用程序目录中搜索静态文件)和 FileSystemFinder
(在 STATICFILES_DIRS
中搜索目录)搜索静态文件
如果静态文件设置还不清楚,看一下documentation。