В настоящее время я работаю над приложением Django, и в настоящее время у меня есть проблема. Проблема в том, что когда пользователь не вошел в систему и находится на странице сообщения в блоге (в данном случае post_detail) и нажимает кнопку «Нравится», пользователь направляется на страницу входа. Однако, как только пользователь вошел в систему, он перенаправляется обратно на домашнюю страницу (в данном случае blog_home, которая показывает список всех сообщений в блоге).
Теперь, это не то, что я хотел. Я хотел, чтобы пользователь вернулся на страницу сообщения в блоге (страница post_detail).
Изучив проблему, я понял, что это связано с LOGIN_REDIRECT_URL. Однако после попытки решить проблему мне трудно перенаправить пользователя на определенную страницу.
Есть ли какие-либо идеи о том, как я могу заставить его работать? Любой вклад действительно ценится.
Настройки.py:
LOGIN_REDIRECT_URL = '/redirect'
views.py(блог):
def wherenext(request):
if request.user:
return HttpResponseRedirect(reverse('post_detail'))
else:
return HttpResponseRedirect(reverse('blog_home'))
...
@login_required(redirect_field_name="post")
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
liked = False
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(request.user)
liked = False
else:
post.likes.add(request.user)
liked = True
return HttpResponseRedirect(reverse('post_detail', args=[str(pk)]))
...
class BlogDetailView(DetailView):
model = Post
template_name = 'blog/post_detail.html'
...
def get_context_data(self, *args, **kwargs):
context = super(BlogDetailView, self).get_context_data(*args, **kwargs)
stuff =get_object_or_404(Post, id=self.kwargs['pk'])
total_likes = stuff.total_likes()
liked = False
if stuff.likes.filter(id=self.request.user.id).exists():
liked = True
context["liked"] = liked
return context
URL.py:
urlpatterns = [
path('redirect/', wherenext, name='post_detail'),
path('post/<uuid:pk>/', BlogDetailView.as_view(), name='post_detail'),
path('',BlogListView.as_view(),name='blog_home'),
]
post_detail.html:
<form action="{% url 'like_post' post.pk %}"method="POST">
{% csrf_token %}
{% if user.is_authenticated %}
{% if liked %}
<button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-danger btn-sm">Unlike</button>
{% else %}
<button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-primary btn-sm">Like</button>
{% endif %}
{% else %}
{% if liked %}
<button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-danger btn-sm">Unlike</button>
{% else %}
<button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-primary btn-sm">Like</button>
{% endif %}
{% endif %}
</form>