我一直在为这个问题苦苦挣扎两天以上,我在这里看过类似的问题和许多文档,但没有任何帮助。基本上,我正在构建一个Django Web应用程序(人们可以将自己添加为朋友)我使用的是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 /,它调用view方法并执行Friend.objects.add_friend,但我希望不发送/发送/页面还是重新加载当前?
那么,你的标签包含“ajax”,这确实是你需要使用的。你有什么尝试? –
我试着用ajax和需要的数据进行表单处理,但它需要'url',我想避免它,因为它会调用url(然后视图等),并且新页面仍然会呈现 - 我不'你想要吗?你认为可以做什么? –
我不明白你在说什么。您的Ajax脚本应发布到视图,该视图返回JS更新页面所需的数据,而无需重新加载。 –