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
相关产品推荐
相关产品推荐

