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

Django博客文章无法在PythonAnywhere显示的问题求助

Django博客部署到PythonAnywhere后文章无法显示问题

我是Django初学者,按教程搭建了个人博客,但部署在pythonanywhere.com后文章无法正常显示。已经尝试过更新数据库、重新从GitHub拉取代码重建网站,现在能显示博客标题,但文章内容还是不出来。

以下是我的相关代码文件:

base.html

{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <title>Kington's blog</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    </head>
    <body>
        <header class="page-header">
          <div class="container">
              <h1><a href="/">Kington's Blog</a></h1>
          </div>
        </header>
        <main class="container">
            <div class="row">
                <div class="col">
                {% block content %}
                {% endblock %}
                </div>
            </div>
        </main>
    </body>
</html>

post_list.html

{% extends 'blog/base.html' %}

{% block content %}
    {% for post in posts %}
        <article class="post">
            <time class="date">
                {{ post.published_date }}
            </time>
            <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
            <p>{{ post.text|linebreaksbr }}</p>
        </article>
    {% endfor %}
{% endblock %}

post_detail.html

{% extends 'blog/base.html' %}

{% block content %}
    <article class="post">
        {% if post.published_date %}
            <time class="date">
                {{ post.published_date }}
            </time>
        {% endif %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.text|linebreaksbr }}</p>
    </article>
{% endblock %}

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

views.py

from django.shortcuts import render
from .models import Post
from django.utils import timezone
from django.shortcuts import render, get_object_or_404


# Create your views here.

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})


def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

排查与解决建议

  • 检查数据库中的文章状态
    登录PythonAnywhere控制台,激活项目虚拟环境后运行python manage.py shell,执行以下代码:

    from blog.models import Post
    from django.utils import timezone
    # 查看所有文章
    print(Post.objects.all())
    # 查看符合显示条件的文章
    print(Post.objects.filter(published_date__lte=timezone.now()))
    

    如果前者有文章但后者为空,说明文章未设置published_date,或者日期设置在未来,导致被过滤掉。

  • 确认模型与发布逻辑
    检查Post模型的定义,确保published_date是DateTimeField类型,且你在创建文章时已正确填写发布日期,或者有自动发布的逻辑(比如自定义的publish方法)。

  • 验证数据库迁移
    在PythonAnywhere控制台进入项目目录,执行:

    python manage.py makemigrations
    python manage.py migrate
    

    确保迁移全部执行完成,没有报错。

  • 检查时区设置
    查看项目settings.py中的TIME_ZONE配置,确保和本地开发环境一致(比如'Asia/Shanghai'),避免时区差异导致日期过滤逻辑出错。

  • 查看错误日志
    登录PythonAnywhere的Web管理页面,查看项目的错误日志,排查是否有数据库连接、模型加载等方面的错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:02:45