首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页未找到(404) urls.py

页未找到(404) urls.py
EN

Stack Overflow用户
提问于 2021-08-15 08:19:10
回答 2查看 57关注 0票数 0

问题:

未找到

页面(404)请求方法: GET请求URL:由: blogapp.views.BlogDetailView引发的http://127.0.0.1:8000/home/category/coding/

urls.py

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

如果我逆转这两个

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

代码语言:javascript
复制
      {% 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,我想渲染。

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

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

代码语言:javascript
复制
category_list = Category.objects.exclude(name='default')
context = {
    "category_list": category_list,
}

我想问题是联系吗?我的肚脐还是BlogDetailView?,这有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-15 08:50:13

问题解决了,我使用str和slug,所以我的类别与我的_id不匹配,需要匹配这两个

代码语言:javascript
复制
path('home/category/<slug:category>/', views.CatListView.as_view(), name="category"),
path('home/category/<slug:_id>/', views.BlogDetailView, name="blog")
票数 0
EN

Stack Overflow用户

发布于 2021-08-15 08:23:33

您必须接受它为字符串。

就像这样:

代码语言:javascript
复制
path('home/category/<str:category>/', views.CatListView.as_view(), name="category"),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68789830

复制
相关文章

相似问题

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