Отрешите страницу блога, не загружая и комментарии, не работает раздел.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отрешите страницу блога, не загружая и комментарии, не работает раздел.

Сообщение Anonymous »

Я работаю на странице блогов React , где пользователи могут просматривать сообщения в блоге и оставлять комментарии (аналогично разделу комментариев YouTube). Однако, нажав на страницу блога и нажав на блог, я хочу просмотреть контент, который больше не загружается должным образом и просто застрял, говоря, что содержимое больше не видно на указанной странице, и раздел комментариев тоже не виден. < /p>
Что я попробовал и ожидал результат: < /strong> < /h3>
  • Сообщения в блоге:
    • Используемый axios.get ('http://127.0.0.1:8000/api/blogs/') inside useeffect () .
    • Я ожидал, что посты будут загружаться, но они не появляются.
      < /li>

      Ожидаемое удаление блога для работы, но столкнулась с ошибками. < /P>
      < /li>
      < /ul>
      < /li>
      < Сильная> Система комментариев:

      Реализованный раздел комментариев с использованием axios.post () для отправки новых комментариев, но ничего отображается во всех его просто застрявших, говоря, что загрузка. < /p>
      < /li>
      Ожидаемые комментарии для отображения, но они не появляются. < /p>
Вот бэкэнд фрагмент кода, который я пытаюсь запустить
@api_view(['GET', 'POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def blog_comments(request, blog_id):
"""
GET /blogs//comments/
Returns: All comments for specified blog

POST /blogs//comments/
Required data: content, parent (optional for replies)
Returns: Created comment data
Requires: Authentication Token
"""
blog = get_object_or_404(Blog, id=blog_id)
if request.method == 'GET':
comments = Comment.objects.filter(blog=blog, parent=None)
serializer = CommentSerializer(comments, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = CommentSerializer(data=request.data)
if serializer.is_valid():
serializer.save(blog=blog, author=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@api_view(['DELETE'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def delete_comment(request, comment_id):
"""
DELETE /blogs//comments//
Deletes specified comment if user is author
Requires: Authentication Token
Returns: 204 No Content on success
"""
comment = get_object_or_404(Comment, id=comment_id)
if comment.author != request.user:
return Response({'detail': 'Permission denied'}, status=status.HTTP_403_FORBIDDEN)
comment.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
< /code>
frontend < /p>
import React, { useState, useEffect, useContext } from 'react';
import { useParams } from 'react-router-dom';
import axios from 'axios';
import { UserContext } from '../../context/UserContext';

const BlogPost = () => {
const { id } = useParams();
const [blog, setBlog] = useState(null);
const [comments, setComments] = useState([]);
const [newComment, setNewComment] = useState('');
const { user } = useContext(UserContext);

useEffect(() => {
fetchBlogPost();
}, []);

const fetchBlogPost = async () => {
try {
const [blogResponse, commentsResponse] = await Promise.all([
axios.get(`http://127.0.0.1:8000/api/blogs/${id}/`),
axios.get(`http://127.0.0.1:8000/api/blogs/${id}/comments/`, {
headers: user ? { 'Authorization': `Token ${user.token}` } : {}
})
]);
setBlog(blogResponse.data);
setComments(commentsResponse.data || []);
} catch (error) {
console.error('Error fetching blog post:', error);
}
};

const handleCommentSubmit = async (e) => {
e.preventDefault();
if (!user) {
alert("You must be logged in to comment.");
return;
}

try {
const response = await axios.post(
`http://127.0.0.1:8000/api/blogs/${id}/comments/`,
{ content: newComment },
{ headers: { 'Authorization': `Token ${user.token}` } }
);
setComments([response.data, ...comments]);
setNewComment('');
} catch (error) {
console.error('Error posting comment:', error);
}
};

const handleDeleteComment = async (commentId) => {
try {
await axios.delete(
`http://127.0.0.1:8000/api/blogs/${id}/c ... ommentId}/`,
{ headers: { 'Authorization': `Token ${user.token}` } }
);
setComments(comments.filter(comment => comment.id !== commentId));
} catch (error) {
console.error('Error deleting comment:', error);
}
};

if (!blog) return Loading...;

return (

{blog.title}
{blog.content}


Comments
{user && (

setNewComment(e.target.value)}
placeholder="Add a public comment..."
required
/>
Comment

)}

{comments.length > 0 ? (
comments.map((comment) => (

{comment.author}: {comment.content}
handleDeleteComment(comment.id)}>Delete

))
) : (
No comments yet.
)}


);
};

export default BlogPost;
< /code>
api - urls.py < /p>
from django.urls import path
from .views import blog_comments, delete_comment

urlpatterns = [
path('blogs//comments/', blog_comments, name='blog_comments'),
path('blogs//comments//', delete_comment, name='delete_comment'),
]


Подробнее здесь: https://stackoverflow.com/questions/794 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»