Python Django-按钮url

Python Django-按钮url,python,django,url,frontend,django-1.x,Python,Django,Url,Frontend,Django 1.x,我有个奇怪的问题。我正在创建一个函数来将好友添加到列表中,这是我的视图和url @login_required(login_url='user:login') def friend_add(request, friend): friendship = FriendShip( from_friend=request.user, to_friend=friend ) friendship.save() return HttpResp

我有个奇怪的问题。我正在创建一个函数来将好友添加到列表中,这是我的视图和url

@login_required(login_url='user:login')
def friend_add(request, friend):

    friendship = FriendShip(
        from_friend=request.user,
        to_friend=friend
    )

    friendship.save()
    return HttpResponseRedirect(request.path)

url(r'^add_friend/$', views.friend_add, name="add_friend"),
当我在模板中调用url时:

<input type="button" class="btn btn-info" value="Add Friend" onclick="location.href='{% url 'user:add_friend' friend=post.poster %}';">

加载网页时将发生异常:

找不到具有关键字参数“{'friend':}”的“add_friend”的反转。已尝试1个模式:[“用户/添加朋友/$”]

经过多次尝试后,可以加载网页并删除输入

<input type="button" class="btn btn-info" value="Add Friend" onclick="location.href='{% url 'user:add_friend'%}';">

(这很奇怪,因为视图正在请求输入)

但是,当我单击按钮时,会发生另一个异常:

friend_add()缺少1个必需的位置参数:“friend”


我对这个问题很困惑。非常感谢您的帮助

你的urlpattern也应该有这样的friend参数:

url(r'^add_friend/(?P<friend>[0-9]+)/$', views.friend_add, name="add_friend"),
url(r'^add\u friend/(?P[0-9]+)/$),views.friend\u add,name=“add\u friend”),
这将允许您将好友对象的整数ID传递到url,如下
add\u friend/12

注意
路径(..)
可从Django-2.0获得

这里的问题是
friend
不在URL中:

url(r'^add_friend/$', views.friend_add, name="add_friend"),  # no parameter
例如,您可以通过指定以下项为好友使用主键(
pk
):

现在我们可以在反向url中使用朋友的主键:

<input
    type="button"
    class="btn btn-info"
    value="Add Friend"
    onclick="location.href='{% url 'user:add_friend' friend=post.poster.pk %}';"
>

(多行以便于阅读)。

数据ajax目标在HTML按钮中调用Django的特定URL

<button type="Submit" value="Submit" class="btn btn-outline-light text-dark"  data-ajax-target="{% url 'collections' %}?collection={{ collection.collectionID }}" }">
<span>{{ collection.choice_label }}</span>
</button>

注意:
路径
仅在django 2.0中可用。对于django版本<2.0,请使用
url
。@ABDULNIYASPM非常感谢!我正要问关于“路径”的问题,对了,我在url中找不到了。谢谢你的帮助@阿卜杜勒尼亚斯姆:谢谢。更新了django-1.x:)的备注和替代选项。@WillemVanOnsem如果您使用的是regex,那么它不应该是re_path,而应该是旧的捕获语法,如果您使用的是path-capture-syntax,那么它应该是text。哦,对了,这部分不见了,谢谢您的帮助!
<input
    type="button"
    class="btn btn-info"
    value="Add Friend"
    onclick="location.href='{% url 'user:add_friend' friend=post.poster.pk %}';"
>
<button type="Submit" value="Submit" class="btn btn-outline-light text-dark"  data-ajax-target="{% url 'collections' %}?collection={{ collection.collectionID }}" }">
<span>{{ collection.choice_label }}</span>
</button>