Slug不可用时渲染到主页(DJANGO)

  • 本文关键字:主页 DJANGO Slug python django
  • 更新时间 :
  • 英文 :


我创建了一个网页,管理员可以使用slug将名称添加到slug字段,通过管理页面创建随机页面。我试图做的是,如果用户试图呈现随机页面;404〃;页

型号

class CustomPage(models.Model):
title = models.CharField(max_length=20, blank=True)
subtitle = models.CharField(max_length=50, blank=True)
slug = models.SlugField(max_length=500,blank=True)
content = RichTextField()
displayOnFooter = models.BooleanField(default=False)
def __str__(self):
return f'{self.title}'
def get_absolute_url(self):
return reverse('custom-page', kwargs={'slug': self.slug})

views.py

def custom_page(request, slug):
context = {
'all': CustomPage.objects.filter(slug=slug),
'toBePublished': CustomPage.objects.all()
}
all_query = CustomPage.objects.all()
count = 0;
for i in all_query:
if i.slug == slug:
return render(request, 'member/custom_page.html', context)
elif count < len(all_query):
count += 1;
else:
return render(request, 'member/home.html',context)

urls.py

path('register/', views.register, name='member-register'),
path('login/', auth_views.LoginView.as_view(template_name='member/login.html'), name = 'login'),
path('logout/', auth_views.LogoutView.as_view(template_name='member/logout.html'), name = 'logout'),
path('forgot-password/', auth_views.PasswordResetView.as_view(template_name='member/forgot-password.html'), name = 'member-forgot-password'),
path('profile/', views.profile, name = 'profile'),
path('accounts/login/', auth_views.LoginView.as_view(template_name='member/login.html')),
path('groups/', views.groups, name='member-group'),
path('groups/<slug:slug>/', views.groups_detail, name='member-group-detail'),
path('<slug:slug>/', views.custom_page, name='custom-page'),

当我自己在末尾添加一个随机字符串时,例如:

http://127.0.0.1/dasada/

我有

/dasada处的ValueError/视图member.views.custom_page未返回HttpResponse对象。它返回None

谢谢Onur

在下面的代码中,视图中所有可能的退出路径都返回一个响应。当您为自定义页面匹配段塞时,它只与默认响应不同:

def custom_page(request, slug):
context = {
'all': CustomPage.objects.filter(slug=slug),
'toBePublished': CustomPage.objects.all()
}
custom_pages = CustomPage.objects.all()
for page in custom_pages:
if page.slug == slug:
return render(request, 'member/custom_page.html', context)
# ends the search with no match
return render(request, 'member/home.html',context)

最新更新