Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 包含标记内url标记的NoReverseMatch_Javascript_Python_Django_Django Templates - Fatal编程技术网

Javascript 包含标记内url标记的NoReverseMatch

Javascript 包含标记内url标记的NoReverseMatch,javascript,python,django,django-templates,Javascript,Python,Django,Django Templates,我试图在包含url标记的html模板中呈现一个链接。 我以前做过这件事,通常都能成功,但由于某种原因,这次我做不到 我得到一个NoReverseMatch错误,并怀疑它是错误的,因为Django试图首先加载url标记,但我的对象还没有准备好,所以pk是空的。我相信这是因为动态数据加载需要一段时间,而静态数据已经加载 如果我将pk设置为一个固定的数字,url就会工作,但我希望它能够动态更改 错误: Reverse for 'transaction' with keyword arguments '

我试图在包含url标记的html模板中呈现一个链接。 我以前做过这件事,通常都能成功,但由于某种原因,这次我做不到

我得到一个NoReverseMatch错误,并怀疑它是错误的,因为Django试图首先加载url标记,但我的对象还没有准备好,所以pk是空的。我相信这是因为动态数据加载需要一段时间,而静态数据已经加载

如果我将pk设置为一个固定的数字,url就会工作,但我希望它能够动态更改

错误:

Reverse for 'transaction' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['en/budget/account\\/(?P<pk>[0-9]+)\\/$']
index.html:

{% csrf_token %}
    <h1>Personal Budget</h1>
    <br />
    <p>
        <label for="accountSelector">Account:</label>
        <select required = "" id="accountSelector">
            {% for account in accounts %}
                <option value="{{account.pk}}">{{account}}</option>
            {% endfor %}
        </select>
    </p>
    <hr />
    {% include 'budgetapp/account.html' %}
<script>
    $(document).ready(function () {
        reload();
    });
    $("#accountSelector").change(function () {
        reload();
    });
    function reload() {
        var dictionary = {}
        dictionary['csrfmiddlewaretoken'] = $('input[name="csrfmiddlewaretoken"]').val();
        dictionary['accountPk'] = $('#accountSelector').val();

        $('#accountDiv').load("account/", dictionary);
        console.log('Changed account');
    }
</script>
{%csrf\u令牌%}
个人预算

账户: {帐户%中的帐户的%s} {{account}} {%endfor%}


{%include'budgetapp/account.html%} $(文档).ready(函数(){ 重新加载(); }); $(“#accountSelector”).change(函数(){ 重新加载(); }); 函数重载(){ 变量字典={} 字典['csrfmiddlewaretoken']=$('input[name=“csrfmiddlewaretoken”]')。val(); 字典['accountPk']=$('#accountSelector').val(); $('#accountDiv').load(“account/”,dictionary); console.log(“已更改的帐户”); }
account.html:

<div id="accountDiv">
    <p>
        Name: {{account.name}} &nbsp; Account balance: {{account.balance}}&ensp;<a href="{% url 'budgetapp:transaction' pk=account.pk %}">Add a transaction</a>
    </p>
</div>


名称:{{account.Name}}账户余额:{{account.balance}}&ensp;

如果我将
{%url'budgetapp:transaction'pk=account.pk%}
更改为
/budget/account/{{account.pk}}
它可以工作,但感觉不对。
我试图提供所有必要的代码,但请告诉我是否太多或缺少什么。

如果要使用
{%url'budgetapp:transaction'pk=account.pk%}
account
必须在模板上下文中。这与浏览器动态加载数据无关。在将响应发送到浏览器之前,服务器将呈现整个模板


使用
/budget/account/{{account.pk}}
不会给出错误,但是如果查看呈现的HTML,您将看到
/budget/account/
,因为
{account.pk}
将作为
'

计算。谢谢,我在索引视图中添加了一个account实例,现在它可以正常工作了。我忽略了当索引模板第一次加载时,它已经加载了帐户模板,但没有帐户实例。
{% csrf_token %}
    <h1>Personal Budget</h1>
    <br />
    <p>
        <label for="accountSelector">Account:</label>
        <select required = "" id="accountSelector">
            {% for account in accounts %}
                <option value="{{account.pk}}">{{account}}</option>
            {% endfor %}
        </select>
    </p>
    <hr />
    {% include 'budgetapp/account.html' %}
<script>
    $(document).ready(function () {
        reload();
    });
    $("#accountSelector").change(function () {
        reload();
    });
    function reload() {
        var dictionary = {}
        dictionary['csrfmiddlewaretoken'] = $('input[name="csrfmiddlewaretoken"]').val();
        dictionary['accountPk'] = $('#accountSelector').val();

        $('#accountDiv').load("account/", dictionary);
        console.log('Changed account');
    }
</script>
<div id="accountDiv">
    <p>
        Name: {{account.name}} &nbsp; Account balance: {{account.balance}}&ensp;<a href="{% url 'budgetapp:transaction' pk=account.pk %}">Add a transaction</a>
    </p>
</div>