私は2日以上この問題に苦労しています。私はここで同様の質問をしていますが、多くの文書に目を通していますが、何も助けてくれませんでした。私はDjangoパッケージのdjango-friendshipを使用していますが、私は次のようにしたいと考えています:ユーザーが他の誰かのプロフィールにいるとき、友だちの追加]ボタンをクリックすると、友達のリクエストを送信する必要があります。しかし、私はページを再ロードせずに別のものにレンダリングせずにこれを達成したいと思います。リクエストを送信するためにトリガされなければならないメソッドはviews.pyにあります。おそらく私はajaxを使用する必要がありますが、どのような方法ですか?私の最終的な目標は、例えば、(リロードせずに)Facebookの「友達を追加」ボタンとして実行するボタンです。Django:ページを再ロードせずにフォームを送信したり、別のページにレンダリングせずにPOSTリクエストを行いますか?
friend_profile.html
<form action="{% url 'users:fr_request' pk=friend.id %}" method="POST">
{% csrf_token %}
<input type="submit" value="Add friend"/>
views.py
def friendship_add(request, pk):
if request.method == 'POST':
to_user = User.objects.get(pk=pk)
from_user = request.user
try:
Friend.objects.add_friend(from_user, to_user)
except AlreadyExistsError as e:
print('Exception when adding a friend ' + e)
else:
return HttpResponse('You added a friend')
return render(request, 'users/friend_profile.html')
urls.py
urlpatterns = [
url(r'users/(?P<pk>\d+)/send/$', views.friendship_add, name='fr_request'),
]
フォームの送信時に、私は/(?P \ d +)/ send /にビューメソッドを呼び出し、Friend.objects.add_friendを実行するユーザーにページをレンダリングしますが、 /ページ、または現在の読み込み?
あなたのタグには「ajax」が含まれています。これは実際に使用する必要があります。何を試しましたか? –
私はajaxとデータが必要なフォームを進めようとしましたが、URLを呼び出すと(そしてビューなど)新しいページがレンダリングされるので、避けたい 'url'が必要です。欲しい?あなたはどうやってできると思いますか? –
あなたの言っていることを理解できません。 Ajaxスクリプトは、リロードせずにページを更新するためにJSが必要とするデータを返すビューにポストする必要があります。 –