2017-12-28 40 views
1

私は奇妙な質問を取得します。私はリストに友人を追加する関数を作成しています、ここに私のビューとURLです。ジャンゴ - ボタンの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を呼び出している間:{」キーワード引数を持つ 'add_friend' の

リバース:

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

例外がロード Webページ間、起こるだろう'friend':} 'が見つかりません。 1つのパターン(s)は試してみました:[ 'ユーザー/ add_friend/$']いくつかのattemptions後

を入力

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

を削除されて、Webページをロードすることができます(これは、十分に奇妙です私はボタンをクリックするとビューが、しかし)入力のために

を求めている、別の例外が発生した:1つの必要な位置引数が不足して

friend_addを(): 「友達の

が、私はこの質問については本当に混乱してしまいます。どんな助けでも本当に感謝しています!

答えて

4

path(..) Django- 2.0から入手可能です。

ここでの問題は、friendURLでではないということです。

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

あなたは、例えばpath(..)を指定することで、友人のために主キー(pk)を使用することができます。

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

で作業する場合は、url(..)と正規表現を使用できます:

url(r'^add_friend/(?P<friend>[0-9]+)/$', 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.pk %}';" 
>

(複数行読みやすくするため)。

+2

注: 'PATH'のみジャンゴ2.0で利用可能です。 djangoバージョン<2.0の場合は、代わりに 'url'を使用してください。 –

+0

@ABDULNIYASPM本当に感謝しています!私は '経路'について質問しようとしていた –

+0

右、私はURLにそれを紛失しています。お手伝いありがとう! –

2

あなたURLPATTERNも、このような友人の引数を持つshoul:

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

これは、あなたがこのadd_friend/12のようなURLに友人オブジェクトの整数IDを渡すことができます。

+1

右ああ、その部分は、助けのための感謝が不足しています! –