Python Django-按钮url
我有个奇怪的问题。我正在创建一个函数来将好友添加到列表中,这是我的视图和urlPython 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
@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>