加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django的javascript模板标签

发布时间:2020-12-20 11:02:59 所属栏目:Python 来源:网络整理
导读:我的应用程序的urls.py是: from django.urls import pathfrom . import viewsapp_name = 'javascript'urlpatterns = [ path('create_table',views.create_table,name='create_table') 我的views.py是: def create_table(request): row_data = "this is row
我的应用程序的urls.py是:

from django.urls import path
from . import views

app_name = 'javascript'
urlpatterns = [
    path('create_table',views.create_table,name='create_table')

我的views.py是:

def create_table(request):
    row_data = "this is row data"
    context = {'row_data': row_data}
    return render(request,'javascript/create_table.html',context)

我的create_table.html是:

{% load static %}
<button id="create_table">Get data</button>
<div id="place_for_table"></div></div>
<script src="{% static 'javascript/scripts/create_table.js' %}"></script>

我的create_table.js是:

function create_table() {
    document.getElementById("place_for_table").innerHTML = '{{ row_data }}';
}

document.getElementById("create_table").onclick = function() {
    create_table()
}

我想要做的是在单击create_table按钮时运行create_table.js脚本,该按钮应该为表div元素显示“this is row data”文本.

但是,显示的是{{row_data)).

我已经阅读了关于在Javascript中使用Django变量的其他类似问题,但根据我的理解,他们都建议我按照我的方式去做,所以我不确定我做错了什么.

解决方法

如果你的模板中有一个元素然后检测到点击,那么为什么不以另一种方式执行它然后将上下文变量传递给JS函数呢?

<button onclick="create_table({{ row_data }})">Click me</button>

通过这样做,您可以检查页面以查看数据是否将正确传递.您可能必须通过像escapejssafe这样的过滤器传递数据.

或者你也可以这样做

{% load static %}

<button id="create_table">Get data</button>
<div id="place_for_table"></div></div>

<script type="text/javascript">
    var row_data = "{{ row_data }}";
</script>
<script src="{% static 'javascript/scripts/create_table.js' %}">
</script>

这种方法的问题是变量的范围,因为您可能不希望在全局范围内声明事物,因此可以将其视为一种简单的方法,但不一定是最佳解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读