python - Django+ HTML:/HomeFeed/ 处的 EmptyPage 错误:此页面没有错误
问题描述
Django+ HTML:/HomeFeed/ 处的 EmptyPage 错误:此页面没有错误。当我注销并尝试访问同一页面时会发生这种情况。登录后,我可以访问相同的页面。它是否与我的观点或我的模板有关。如果您需要我的模板的一部分,请告诉我 :)
谢谢!
def home_feed_view(request, *args, **kwargs):
context = {}
blog_posts = BlogPost.objects.all()
context['blog_posts'] = blog_posts
type_of_tinc = TypeoftincFilter(request.GET, queryset=BlogPost.objects.all())
context['type_of_tinc'] = type_of_tinc
paginated_type_of_tinc = Paginator(type_of_tinc.qs, 4)
page = request.GET.get('page')
tinc_page_obj = paginated_type_of_tinc.get_page(page)
context['tinc_page_obj'] = tinc_page_obj
blog_post = BlogPost.objects.filter(author=request.user.id).order_by('date_updated')
page = request.GET.get('page2')
own_account_post = Paginator(blog_post, 2)
try:
blog_post = own_account_post.page(page)
except PageNotAnInteger:
blog_post = own_account_post.page(2)
except EmptyPage:
blog_post = own_account_post.page(blog_post_paginator.num_pages)
context['blog_post'] = blog_post
return render(request, "HomeFeed/snippets/home.html", context)
模型.py
class BlogPost(models.Model):
chief_title = models.CharField(max_length=50, null=False, blank=False)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
body = models.TextField(max_length=5000, null=False, blank=False)
slug = models.SlugField(blank=True, unique=True)
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
追溯
During handling of the above exception (int() argument must be a string, a bytes-like object or a number, not 'NoneType'), another exception occurred:
blog_post = own_account_post.page(page)
解决方案
因此,正如我在评论中提到的那样,出现此问题是因为您已注销并且您的查询没有找到任何blog_posts
with .filter(author=request.user.id)
,因为查询集的值request.user
是None
空的。要“解决”这个问题,您可以执行以下操作:
def home_feed_view(request, *args, **kwargs):
context = {}
blog_posts = BlogPost.objects.all()
context['blog_posts'] = blog_posts
type_of_tinc = TypeoftincFilter(request.GET, queryset=BlogPost.objects.all())
context['type_of_tinc'] = type_of_tinc
paginated_type_of_tinc = Paginator(type_of_tinc.qs, 4)
page = request.GET.get('page')
tinc_page_obj = paginated_type_of_tinc.get_page(page)
context['tinc_page_obj'] = tinc_page_obj
return render(request, "HomeFeed/snippets/home.html", context)
if request.user.is_authenticated: # the change is here
blog_posts = BlogPost.objects.filter(author=request.user.id).order_by('date_updated')
else:
blog_posts = BlogPost.objects.all()
context['blog_posts'] = blog_posts
page = request.GET.get('page2')
own_account_post = Paginator(blog_post, 2)
try:
blog_post = own_account_post.page(page)
except PageNotAnInteger:
blog_post = own_account_post.page(2)
except EmptyPage:
blog_post = own_account_post.page(blog_post_paginator.num_pages)
context['blog_post'] = blog_post
return render(request, "HomeFeed/snippets/home.html", context)