2016-11-21 56 views
1

我有以下django模板,我已经定义了一个按钮,以便它调用我添加到如下所示的页面的javascript函数。我有以下问题:django模板无法调用javascript

1)如果我将脚本标记带到标题部分,则会出现无标记。

2)如果按下按钮,我得到未定义的错误消息。 (Uncaught ReferenceError:postData)。

我在这里做什么?

非常感谢你, 迈克

newproduct.html

{% load staticfiles %} 
<!DOCTYPE html> 
<html> 
<head> 





<title>New Product</title> 
</head> 
<body> 
<p>Hellow</p> 
<a href="/">Back</a> 

    <h2>Please enter product details:</h2> 
    <button onclick="postData();">Send Post</button> 


<form action="http://127.0.0.1:8000/newproduct/" method="post"> 
    <p>{{ message }}</p> 
     {% csrf_token %} 
     {{ form.as_p }} 

    <input type="submit"/> 
</form> 


<script src="bower_components/jquery/src/jquery.js" type="text/javascript"/> 
<script src="scripts/main.js" /> 

</body> 
</html> 

main.js

function postData() 
{ 
    $.post('/newproduct', {name:'New Product JS', price:555, }); 
}; 
+0

我有完全相同的问题,我渴望找到答案。 – user1941390

回答

4

您已经硬编码在参考postData你的HTML,但你已经使用它,然后再定义它,因为JS直到页面结束才加载。

您可以通过将脚本移动到HTML的顶部来解决这个问题,但最好不要像这样直接在HTML中使用JS。相反,您的脚本本身应该使用jQuery dom-ready功能将自己绑定到按钮事件。

HTML:

<h2>Please enter product details:</h2> 
<button id="my_button">Send Post</button> 

main.js

$(function() { 
    $('#my_button').click(function() { 
    $.post('/newproduct', {name:'New Product JS', price:555, }); 
    }); 
}); 
0

也许你得到难以处理路径URL,而不是使用完整路径,你可以试试:

{% static ‘path/to/file’ %} 

在你的settings.py中

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

请记住,您的静态文件目录设置在您的项目的同一级别。