首页 > 解决方案 > 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) 

标签: pythonhtmldjangodjango-modelsdjango-views

解决方案


因此,正如我在评论中提到的那样,出现此问题是因为您已注销并且您的查询没有找到任何blog_postswith .filter(author=request.user.id),因为查询集的值request.userNone空的。要“解决”这个问题,您可以执行以下操作:

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)

推荐阅读