首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django+ HTML: EmptyPage at /HomeFeed/ Error:此页面没有错误

Django+ HTML: EmptyPage at /HomeFeed/ Error:此页面没有错误
EN

Stack Overflow用户
提问于 2021-01-04 15:50:38
回答 2查看 42关注 0票数 0

Django+ HTML: EmptyPage at /HomeFeed/ Error:此页面没有错误。当我注销并尝试访问同一个页面时,就会发生这种情况。当我登录时,我能够访问相同的确切页面。是否与我的视图或模板有关。如果您需要我的模板的一部分,请告诉我:)

谢谢!

代码语言:javascript
复制
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)

models.py

代码语言:javascript
复制
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)

回溯

代码语言:javascript
复制
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) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-04 16:45:13

因此,正如我在注释中提到的,出现此问题是因为您已注销,并且您的查询没有找到任何带有blog_posts.filter(author=request.user.id),因为request.user的值为None,查询集为空。要“修复”这个问题,您可以这样做:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2021-01-04 17:08:26

我想这是由这个引起的。

BlogPost.objects.filter(author=request.user.id) = blog_post

如果用户未登录,则无法获得request.user.id

因此,要么只为身份验证者制作此页面,要么在用户未经过身份验证的情况下显示其他内容。

可以将@login_required()装饰器添加到视图中,使其只有经过身份验证的才能查看。

代码语言:javascript
复制
# this is like what SLDem posted
if request.user.is_authenticated:
    blog_posts = ...
else:
    blog_posts = ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65565570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档