在调用jquery .load之后加载静态文件时,Django会出现404错误

时间:2014-06-25 02:03:36

标签: jquery ajax django django-staticfiles

我有一个位于

的html文件
/static/templates/usersPostsSection.html 

在我的app目录中。 usersPostsSection.html的前几行是:

{% load static %}
<link rel='stylesheet' type='text/css' href="{% static 'css/cssReset.css' %}" />
<link rel='stylesheet' type='text/css' href="{% static 'css/homePageBase.css' %}" />
<script type='text/javascript' src="{% static 'js/jquery.js' %}"></script>

<form class='voteForm' method="post" action="/post/likePost/">{% csrf_token %}
    <button class="voteButton" type="submit">
    </button>
    <input type="hidden" name="postID" value="{{ post.id}}" />
</form>

<script type='text/javascript'>
    $('.voteForm').click( function() {
        event.preventDefault();
        $.post('/post/likePost/', $('.voteForm').serialize(), function(data) {
            $('#content').hide();
            $('#content').load('/static/templates/usersPostsSection.html');
        });
    });
</script>

当转到URL / home /时,我看到usersPostSection.html非常好。但是,一旦我单击表单按钮并运行JS,它就会一直运行到函数的最后一行:

$('#content').load('/static/templates/usersPostsSection.html');

重新加载usersPostsSection.html后,页面上没有显示任何内容,当我使用&#39;检查元素时#39;在Chrome上,它会出错:

GET http://127.0.0.1:8000/home/%7B%%20static%20'js/jquery.js'%20%%7D?_=1403660483401 404 (NOT FOUND) 
Uncaught SyntaxError: Unexpected token < jquery.js:2
GET http://127.0.0.1:8000/home/%7B%%20static%20'css/cssReset.css'%20%%7D 404 (NOT FOUND) jquery.js:3
GET http://127.0.0.1:8000/home/%7B%%20static%20'css/homePageBase.css'%20%%7D 404 (NOT FOUND) jquery.js:3

我很确定它会出现此错误,因为它正在检查

中的静态文件
http://127.0.0.1:8000/home/ 

而不是使用我在settings.py中设置的静态位置:

STATICFILES_DIRS = (
    '/home/user/Documents/djcode/aS/aSa/static'
)

任何想法如何在调用.load函数后停止获取这些404错误?

1 个答案:

答案 0 :(得分:1)

你的问题是静态文件不能解释静态html文件中的django模板标签,因此你需要将/static/templates/usersPostsSection.html写成普通的html。

%7B%%20static%20'js/jquery.js'%20%%7D只是{% static 'js/jquery.js' %}的网址转义值。

或者,您可以通过django视图提供该文件(您是否已在/home/执行此操作?)并从那里加载,而不是作为静态文件。