【问题标题】:Integration of Javascript with DjangoJavascript 与 Django 的集成
【发布时间】:2015-10-12 22:26:39
【问题描述】:

我正在用 Python 重写一个现有的基于 Java 的网站。经过大量研究,我决定使用 Django,并且到目前为止在该项目上取得了一些不错的进展。

但是,我一直在尝试使用以前网站中的一些代码。我对使用 scripts.js 文件特别感兴趣,它似乎具有网站所需的所有 JavaScript 函数,但不知道如何将它与我的 Django 项目集成。

我可以简单地将这个文件放在我的static 文件夹中并引用各个应用程序的功能吗?如果是这样,我将如何调用这些函数?鉴于文件现在必须与基于 Python 的网站而不是基于 Java 的网站一起使用,我是否必须对文件进行任何更改?

我还附上了 scripts.js 文件的 sn-p,让您了解这些函数的外观。

function gatewayGetAllInformation(){
    if(controlsLocked) {
        return;
    }
    lockControls();
    getFiles();
    gatewayGetShifts();
    getCatNews();
    getDepNews();
    getSales();
    getPermanentSales();
    adminGetUsers();
    unlockControls();
};

function gatewayGetShifts(){
    var url = root +"/AjaxResponder?action=getShifts";
    var xmlHttp = GetXmlHttpObject();
    xmlHttp.onreadystate = function() {
        if(xmlHttp.readyState == 4) {
            if(xmlHttp.status == 200) {
                var shiftsHTML =gatewayParseShifts(xmlHttp.responseXML);
                setInnerHTML("upcomingShiftsList",shiftsHTML); // added semicolon
            }
            else {
                setInnerHTML("upcomingShiftsList", "Error Getting Users");
            }
        }
    };
    xmlHttp.open("POST", url, true);
    xmlHttp.send(null);

谢谢!

【问题讨论】:

  • "Python 中的基于 Java 的网站" 你的意思是你在使用 Jython?
  • @NoctisSkytower 我的意思是我正在基于一个用 Java 编写的现有网站用 Python 编写一个网站!对不起,我没有说清楚。

标签: javascript python django web


【解决方案1】:

您可以将您的 javascript 文件放在静态文件夹中。

<!-- on top of the template file -->
{% load static %}

<!-- Where you want to load the javascript file template file -->
<script type="text/javascript" src="{% static 'path/to/your/file.js' %}"></script>

path/to/your/file.js 是相对于static 文件夹的路径。

您应该在生产环境中使用django-compressor 来缩小您的文件。

只要您在 Django 应用程序中定义的路由与 Java 应用程序中用于 AJAX 调用的路由相同,您就不必更改 javascript 文件的内容。

【讨论】:

    【解决方案2】:

    是的,您只需将您的script.js 放入您的/static/ 文件夹中。

    static/
      js/
        script.js
    

    在你的模板中你称之为

    ...
    <script src={% static 'js/script.js' %}></script>
    ...
    

    仅此而已,您可以使用gatewayGetAllInformationgatewayGetShifts 函数。

    但请记住更新script.js 中的常量值

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2021-01-03
      • 2012-07-08
      相关资源
      最近更新 更多