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

Django使用UUID作为Post主键报错'post_id不是有效UUID'如何解决

问题根因

报错的直接触发点是myapp/views.py中blog_list视图的这行代码:

post_uid = Post.objects.get(pk="post_id")

你将固定字符串"post_id"作为主键值传入查询语句,而你的Post模型主键是UUID类型,字符串"post_id"本身不符合UUID格式规范,因此直接触发参数校验失败报错。

修复方案

你的blog_list是文章列表页,已经通过Post.objects.filter(...)查询到了所有符合条件的文章数据存在posts变量中,完全不需要额外单独查询post_id:

  1. 直接删除blog_list视图中的post_uid = Post.objects.get(pk="post_id")这行代码
  2. 删除context字典中"post_uid": post_uid,这一项
模板调用示例

在列表页模板blog/blog_list.html中,遍历posts变量即可直接获取每篇文章的post_id,例如生成文章跳转链接:

{% for post in posts %}
<div class="post-item">
    <h3><a href="{% url 'article' post.post_id %}">{{ post.title }}</a></h3>
    <p>{{ post.text|truncatechars:200 }}</p>
</div>
{% endfor %}
额外优化建议

给article视图添加404异常处理,避免用户输入非法post_id时服务端直接抛出500错误:

  1. 先导入快捷方法:from django.shortcuts import render, get_object_or_404
  2. 修改查询代码为:
current_article = get_object_or_404(Post, pk=post_id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:15:00