我正在尝试编辑html页面,以便已登录的用户可以对video.id
进行收藏/添加书签
这是 .html 文件
<td>
<form method='POST' action="{% url 'researcher_view_app:favourite_post' video.id %}">
{% csrf_token %}
<input type='hidden' name='video' value={{ video.id }}>
<button type='submit'>Bookmark</button>
</form>
</td>
这是 urls.py 文件
path('<int:fav_id>/favourite_post', views.favourite_post, name='favourite_post'),
这是 view.py 文件
def favourite_post(request, fav_id):
video = get_object_or_404(Video, id=fav_id)
if request.method == 'POST':
video.
return render(request, 'researcher_view_app/%s' % fav_id)
答案 0 :(得分:1)
class ProjectUser(AbstractUser):
images = models.ManyToManyField(Images)
def __str__(self):
return self.email
{% for image in available_images %}
/* show image */
<form method='post' action="{% url 'user-image-add' %}">
{% csrf_token %}
<input type='hidden' name='image' value={{image.id}}>
<button type='submit'>bookmark</button>
</form>
{% endfor %}
def user_image_add(request):
user_image_form = ImageForm(request.POST or None)
if request.method == 'POST' and user_image_form.is_valid():
request.user.images.add(user_image_form.cleaned_data['image'])
return JsonResponse(status=200)
raise Http404()
class ImageForm(forms.Form):
image = forms.ModelChoiceField(queryset=Images.objects.all())
要显示这些带有书签的图像,您可以像上面的代码一样在request.user.images
上进行迭代(它会为您提供图像的QS)。
path('user-image-add/', views.user_image_add, 'user-image-add')
def is_bookmarked(self, video_id):
return self.bookmarked_videos.filter(id=video_id).exists()
可以将is_bookmarked
类似地添加到接受user_id并选中video.projectuser_set
的视频模型中。
并将以下内容添加到您的.html文件中,用户在其中添加了视频书签
`{% if video.is_bookmarked %}`
UserProfile
,因为您不需要它。只需确保在视图上下文中具有所需的实例即可。