在 js 文件中未检测到 Django url 模式

Posted

技术标签:

【中文标题】在 js 文件中未检测到 Django url 模式【英文标题】:Django url pattern is not detected in js file 【发布时间】:2020-11-02 10:18:52 【问题描述】:

我在 Django 项目中将 main.js 文件用于 java 脚本逻辑。当我在base.html 的脚本标签中编写此逻辑时,它按预期工作。但是,如果我将.js 文件中的逻辑分开,我会通过在浏览器控制台中指向url : % url 'like-post' %, 来获得Uncaught SyntaxError: Unexpected token '%

base.html:

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

    <link rel="stylesheet" type="text/css" href="% static 'blog/main.css' %">

    <script
      src="https://code.jquery.com/jquery-3.5.1.js"
      integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
      crossorigin="anonymous"></script>
    <script src="% static 'blog/main.js' %" type="text/javascript"></script>
    <title>Blog</title>

</head>

main.js:

$(document).ready(function(event)
    $(document).on('click', '#like', function(event)
        event.preventDefault();
        var pk = $(this).attr('value');
        $.ajax(
            type : 'POST',
            url : % url 'like-post' %,
            data : 'id' : pk, 'csrfmiddlewaretoken': ' csrf_token ', 
            dataType : 'json',
            success : function(response)
                $(".like-section").load(" .like-section")
                   
            ,
            error : function(rs, e)
                console.log(rs.responseText); 
            ,
        );
    );
);

我在 main.js 文件中几乎没有其他 js 逻辑,如果我在 main.js 文件中注释掉上述部分,它会按预期工作。

【问题讨论】:

javascript 文件不是由 django 渲染的,所以你不能在其中使用 django 模板语言。 好的..有没有更好的解决方法来处理这个逻辑? 【参考方案1】:

创建另一个文件夹并将其命名为“静态”。在里面粘贴 .js 文件。 然后在 base.html 文件中,% load static %。你们都完成了。

【讨论】:

以上是关于在 js 文件中未检测到 Django url 模式的主要内容,如果未能解决你的问题,请参考以下文章

Web视图点击:在android中未检测到url,iOS工作:本机反应

当使用 json dict 填充数据表时,在 Jquery 中未检测到 Html 类标记

Django / JS:通过url从.js文件传递参数到django视图[重复]

将 rails 6 部署到 AWS Beanstalk 时,系统中未检测到 Yarn 可执行文件

Codeigniter:在 mac safari 中未检测到 vcf mime 类型

在 UINavigationController 中未检测到 touchesBegan 和其他触摸事件