问题:
未找到
页面(404)请求方法: GET请求URL:由: blogapp.views.BlogDetailView引发的http://127.0.0.1:8000/home/category/coding/
urls.py
from django.urls.conf import path
from blogapp.views import BlogDetailView, BlogListView,searchposts,CatListView
from . import views
app_name = "blogapp"
urlpatterns = [
path('', views.BlogListView, name="blogs"),
path('home/search/', views.searchposts, name= "searchposts"),
path('home/category/<slug:_id>/', views.BlogDetailView, name="blog"),
path('home/category/<category>/', views.CatListView.as_view(), name="category"),
]如果我逆转这两个
path('home/category/<slug:_id>/', views.BlogDetailView, name="blog"),
path('home/category/<category>/', views.CatListView.as_view(), name="category"),它显示的是类别的html,而‘path (’home//slug:_id/‘,views.BlogDetailView,name="blog")的路径没有显示,反之亦然。
以下是navbar的html
{% for category in category_list %}
{% if forloop.counter < 4 %}
<li class="nav-item">
<a class="nav-link" href="home/category/{{category.name}}">{{ category.name|title }}</a>
</li>
{% endif %}
{% endfor %}html,我想渲染。
{% extends "_layouts/base.html" %}
{% block css %}
{{block.super}}
{% endblock css %}
{% block page_title %}Insert_your_name_here{% endblock %}
{% load static %} <!-- load the image -->
{% block maincontent %}
<!-- Banner -->
{% block banner %}
{% load static %}
{% include "layout/category_banner.html" %}
{% endblock %}
<!-- Banner Here -->
!-- This is the main template -->
<section class="blog-posts grid-system">
<div class="container">
<div class="row">
<div class="col-lg-8">
<div class="all-blog-posts">
<div class="row">
{% block categories-main %}
{% include "layout/category.html" %}
{% endblock %}
</div>
</div>
</div>
{% block sidebars %}
{% load static %}
{% include "layout/Sidebars.html" %}
{% endblock %}
</div>
</div>
</section>
{% endblock %}这是我的views.py
def BlogDetailView(request,_id):
try:
category_list = Category.objects.exclude(name='default')
dataset = BlogModel.newmanager.all()
data = BlogModel.newmanager.get(slug =_id)
comments = CommentModel.objects.filter(blog = data, status=True)
except BlogModel.DoesNotExist:
raise Http404('Data does not exist')
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
Comment = CommentModel(your_name= form.cleaned_data['your_name'],
comment = form.cleaned_data['comment'],
blog=data)
Comment.save()
return redirect(f'/home/category/{_id}')
else:
form = CommentForm()
context = {
'data':data,
'form':form,
'comments':comments,
'dataset': dataset,
"category_list": category_list,
}
return render(request,'layout/post-details-main.html',context)
def searchposts(request):
dataset = BlogModel.newmanager.all()
if request.method == 'GET':
query= request.GET.get('q')
submitbutton= request.GET.get('submit')
if query is not None:
lookups= Q(blog_title__icontains=query) | Q(blog__icontains=query)
results= BlogModel.objects.filter(lookups).distinct()
context={'results': results,
'submitbutton': submitbutton,
'dataset': dataset,
}
return render(request, 'layout/search-main.html', context)
else:
return render(request, 'layout/search-main.html')
else:
return render(request, 'layout/search-main.html')
class CatListView(ListView):
template_name = 'layout/category-main.html'
context_object_name = 'catlist'
def get_queryset(self):
content = {
'cat' : self.kwargs['category'],
'posts' :
BlogModel.objects.filter(category__name=self.kwargs['category']).filter(status='published')
}
return content
def category_list(request):
category_list = Category.objects.exclude(name='default')
context = {
"category_list": category_list,
}
return context它说这个问题是由blogapp.views.BlogDetailView提出的,所以我把它添加到我的BlogDetailView中,将它呈现到我的主html中:
category_list = Category.objects.exclude(name='default')
context = {
"category_list": category_list,
}我想问题是联系吗?我的肚脐还是BlogDetailView?,这有什么问题?
发布于 2021-08-15 08:50:13
问题解决了,我使用str和slug,所以我的类别与我的_id不匹配,需要匹配这两个
path('home/category/<slug:category>/', views.CatListView.as_view(), name="category"),
path('home/category/<slug:_id>/', views.BlogDetailView, name="blog")发布于 2021-08-15 08:23:33
您必须接受它为字符串。
就像这样:
path('home/category/<str:category>/', views.CatListView.as_view(), name="category"),https://stackoverflow.com/questions/68789830
复制相似问题