python - Django - 按钮网址

标签 python django url frontend

我有一个奇怪的问题。我正在创建一个将 friend 添加到列表的功能,这是我的 View 和 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 %}';">

加载网页时会发生异常:

Reverse for 'add_friend' with keyword arguments '{'friend': }' not found. 1 pattern(s) tried: ['users/add_friend/$']

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

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

(这很奇怪,因为 View 要求输入)

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

friend_add() missing 1 required positional argument: 'friend'

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

最佳答案

Note: path(..) is available from Django-2.0.

这里的问题是 friend 在 URL 中:

url(r'^add_friend/$', views.friend_add, name="add_friend"),  # no parameter

例如,您可以通过指定 path(..) 为好友使用主键 (pk) :

path(r'add_friend/<b><int:friend>/</b>', views.friend_add, name="add_friend"),

如果您使用 , 你可以使用 url(..)使用正则表达式:

<b>url</b>(r'^add_friend/<b>(?P<friend>[0-9]+)/</b>$', views.friend_add, name="add_friend"),

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

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

(多行以使其更易于阅读)。

关于python - Django - 按钮网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48004776/

相关文章:

python - urllib2 给出 HTTP 错误 400 : Bad Request for certain urls, 对其他人有效

url - Orchard 我可以根据投影仪小部件的 url 或页面 ID 进行查询吗?

python - 如何检查是否给出了函数输入?

python - 在 python 循环中计算数字

python - 运行本地服务器时 django 中的数据库错误?

ajax - 单页多个表单的优雅解决方案

javascript - 如何过滤掉谷歌表格中的重复项和增量

python - Windows-单击应用程序时 Pyinstaller 错误 “failed to execute script ”

python - 沙盒 python 插件

html - 如何在使用图像类型按钮以 HTML 表单提交时删除 x 和 y?