我想要做的是在模板中渲染一个html“a”文件。并使用jquery .load()在此a.html中嵌入其他html文件。但是我的代码失败了。
以下是我的a.html内容:
<html>
<head>
{% load staticfiles %}
<script type="text/javascript" src="{% static "js/jquery-1.10.2.js" %}" />
<script>
$(function(){
$("#includeContent").load("abc.html");
});
</script>
</head>
<body>
<div id="includeContent"></div>
</body>
</html>
以下是我的abc.html:
<html>
<body>
<!-- Hello -->
<p>Hello world </p>
</body>
</html>
以下是我的应用树:
- App:
views.py
models.py
- static
-js:
jquery-1.10.2.js
- template:
a.html
abc.html
在Firebug调试器中,我可以看到jquery-1.10.2.js的源代码,所以我认为jquery脚本已成功包含。
我希望嵌入到a.html中的abc.html应该显示“Hello world” 但是在加载a.html后我看不到任何内容。
有没有办法解决这个问题?
添加“模板”设置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
答案 0 :(得分:5)
Django在服务器端工作。它根据请求准备响应。另一方面,jQuery在客户端工作。所有jQuery事情都发生在用户的浏览器上,load
只会向Django发出另一个请求。但是jQuery无法以任何方式访问Django文件,因为用户的浏览器无法访问正确配置的服务器中的任何项目文件(希望出于安全考虑)。
因此,在您的代码中,jQuery会针对特定网址abc.html
发出请求,因此您需要在urls.py
中分别定义一个或基本上重新考虑您的设计。
答案 1 :(得分:-3)
我不确定这种方式是否正确是的,我们可以从静态文件中加载 html,将文件夹“folder_name”创建为“/static/folder/name.html”
$('.modal-body').load(
'/static/pages/sample.html')