为什么Django尝试错误的url模式?

问题描述:

Django尝试错误的url模式,但我找不到我的错误。为什么Django尝试错误的url模式?

urls.py

 url(r'^message/(?P<advertisementid>(\d+))/$', chat_view, name="chat_view_with_toid"), 
    url(r'^profile/(?P<userid>(\d+))/$', profile_view, name="profile"), 
    url(r'^details/(?P<advertisementid>(\d+))/$', details_view, name='details'), 

views.py

def details_view(request, advertisementid): 
    advertisement_data = Advertisement.objects.get(id=advertisementid) 
    return render(request, "details.html", {"advertisement_data": advertisement_data}) 

def profile_view(request, userid): 
    advertisements = Advertisement.objects.filter(user__id=userid) 
    return render(request, "profile.html", { 'advertisements': advertisements }) 

details.html(从那里我想解析为用户配置文件)

<a href="{% url 'profile' userid=advertisement_data.user.id %}" style="text-decoration:none;"> 
<input type="submit" class="details-btn-profile" value="Profile"></a> 

    <a href="{% url 'chat_view_with_toid' advertisementid=advertisement_data.id %}" 
    style="text-decoration:none"> 
    <input type="submit" class="details-btn-contact" value="Kontakt"></a> 

main.html中

<a href="{% url 'details' advertisementid=advertisement.id %}"> 
<img src="{% static advertisement.image.url %}" alt="Image"/></a> 

当我在按钮class="details-btn-profile"点击Django的给了我这个错误:

Reverse for 'details' with no arguments not found. 1 pattern(s) tried: ['details/(?P(\d+))/$']

为什么它解决细节?有任何想法吗 ?

+0

围绕给定的HTML代码有没有一种形式? –

+0

不,但 Coder949

+0

表单将控制任何提交按钮的行为。如果没有任何形式,我不确定会发生什么。可能会有一个默认的默认导致GET到相同的URL和给定的错误。 –

对不起浪费你的时间,我发现我的错误。在profile.html我有这个HTML的代码:

<a href="{% url 'details' %}" class="announce-hedline"><h3>BMW 320i Limousine</h3></a> 

所以"{% url 'details' %}"不能缺少,因为它需要解决的advertisementid的解决。

我在错误的地方搜索了错误。

谢谢大家的帮助!

url名称chat_view_with_toid似乎不存在于您的urls.py中。

+0

哦对不起忘了添加它..我编辑我的问题 – Coder949

+0

是的......虽然实际的错误消息表明有其他事情正在进行......看起来不像OP提供了它... –

+1

@AaronVisang所以哪里你使用'{%url'细节'...%}' - 我们只能在你的模板中看到'{%url'chat_view_with_toid'...%}'... –

当你点击发送形式的按钮,其操作错误可能是空的ATTR action类似的东西:

<form action=""> 

时候才需要设定:

<form action="{% url 'profile' userid=advertisement_data.user.id %}"> 
      <!-- ^^^^^^^^^^^^^--> 

,或者如果你想要去的链接通过点击只是改变type

<input type="button" class="details-btn-profile" value="Profile"> 
    <!-- ^^^^^^^^^^--> 
+0

你是对的,但我真的需要一个表单?我在另一个地方做了 Coder949

+0

你是对的使用按钮比提交更好,谢谢 – Coder949