You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React对接DRF:展示登录用户点赞帖子图片失败(含语法错误)

问题解决方案

1. 修复React语法错误

第63行的img标签写法不符合JSX语法规范,React中属性值需通过单个表达式完成字符串拼接,正确写法使用模板字符串实现:

// 错误写法
<img src="http://127.0.0.1:8000/"{item.photo} />

// 正确写法
<img src={`http://127.0.0.1:8000/${item.photo}`} alt="帖子图片" />

注意:如果后端返回的item.photo已包含开头斜杠(如/media/posts/photo1.jpg),需去掉Base URL末尾的斜杠,避免出现双斜杠导致路径无效:

<img src={`http://127.0.0.1:8000${item.photo}`} alt="帖子图片" />

2. 实现多图片字段(photo2-photo5)的正常加载

针对photo2到photo5字段,采用同样的路径拼接方式,同时添加空值判断,避免字段为空时加载无效图片:

{/* 渲染photo2 */}
{item.photo2 && <img src={`http://127.0.0.1:8000${item.photo2}`} alt="帖子图片2" />}

{/* 渲染photo3 */}
{item.photo3 && <img src={`http://127.0.0.1:8000${item.photo3}`} alt="帖子图片3" />}

{/* photo4、photo5同理 */}
{item.photo4 && <img src={`http://127.0.0.1:8000${item.photo4}`} alt="帖子图片4" />}
{item.photo5 && <img src={`http://127.0.0.1:8000${item.photo5}`} alt="帖子图片5" />}

3. 后端DRF代码优化(可选)

原后端获取点赞帖子的代码可简化,避免手动循环遍历:

@action(detail=False, permission_classes=[IsAuthenticated])
def liked_posts(self, request, pk=None):
    # 直接通过反向关联获取所有点赞的帖子ID
    liked_post_ids = request.user.like_by_user.values_list('post', flat=True)
    # 查询对应的帖子并序列化
    posts = Post.objects.filter(id__in=liked_post_ids)
    serializer = PostSerializer(posts, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

4. 必要检查点

  • 确认Django的MEDIA_URL和MEDIA_ROOT配置正确,开发环境需在项目urls.py中添加媒体文件访问路由:
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 其他业务路由
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • 确保前端请求后端接口时携带了正确的认证信息(如Token),保证能正常获取用户的点赞帖子数据。

内容的提问来源于stack exchange,提问作者user15346124

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:18:08