我已经创建了一个将用户添加到事件中的函数,该函数运行良好,但是,我在从事件中删除用户的函数方面遇到了问题,我不知道如何获得助理,以便所有者可以删除它。
现在,我有这个:
views.py(将用户添加到事件的函数(
@login_required
def request_event(request, pk):
previous = request.META.get('HTTP_REFERER')
try:
post = Post.objects.get(pk=pk)
Attending.objects.create(post=post, attendant=request.user)
messages.success(request, f'Request sent!')
return redirect(previous)
except post.DoesNotExist:
return redirect('/')
(将用户从事件中删除的功能,由事件所有者处理(
@login_required
def remove_attendant(request, pk, id):
previous = request.META.get('HTTP_REFERER')
try:
post = Post.objects.get(pk=pk)
attendant = Attending.objects.get(id=attendance_id)
Attending.objects.filter(post=post, attendant=attendant).delete()
messages.success(request, f'User removed!')
return redirect(previous)
except post.DoesNotExist:
return redirect('/')
URL.py
path('post/(?P<pk>[0-9]+)/remove_attendant/(?P<attendance_id>[0-9]+)$', views.remove_attendant, name='remove-attendant'),
欢迎任何帮助或评论!非常感谢。
attendance_id
在您的代码中似乎未定义。
def remove_attendant(request, pk, attendance_id):
应该是你所说的。
同样在理论上,您应该能够从request.resolver_match.kwargs
访问pk
和attendance_id
。
您可以简单地在url路径中使用位置参数,而不需要regex。如果有帮助的话(如果经常帮助我的话(,你的变量名也可以是描述性的。
path('remove-attendant-view/<post_id>/<attendance_id>/', views.remove_attendant, name='remove_attendant'),
在views.py中,类似于:
def remove_attendant(request, post_id, attendance_id):
无论您在哪里调用这个视图函数,都必须确保您的url在上下文中按顺序具有这些id和pk,例如:
<a href="{% url 'remove_attendant' post_id=post_id, attendant_id=attendance_id %}">Remove Attendant</a>