Django+ HTML: EmptyPage at /HomeFeed/ Error:此页面没有错误。当我注销并尝试访问同一个页面时,就会发生这种情况。当我登录时,我能够访问相同的确切页面。是否与我的视图或模板有关。如果您需要我的模板的一部分,请告诉我:)
谢谢!
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
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) 发布于 2021-01-04 16:45:13
因此,正如我在注释中提到的,出现此问题是因为您已注销,并且您的查询没有找到任何带有blog_posts的.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)发布于 2021-01-04 17:08:26
我想这是由这个引起的。
BlogPost.objects.filter(author=request.user.id) = blog_post
如果用户未登录,则无法获得request.user.id
因此,要么只为身份验证者制作此页面,要么在用户未经过身份验证的情况下显示其他内容。
可以将@login_required()装饰器添加到视图中,使其只有经过身份验证的才能查看。
或
# this is like what SLDem posted
if request.user.is_authenticated:
blog_posts = ...
else:
blog_posts = ...https://stackoverflow.com/questions/65565570
复制相似问题