找不到页面 (404) 请求方法:GET .......当前路径,博客/博客文章,与其中任何一个都不匹配

Posted

技术标签:

【中文标题】找不到页面 (404) 请求方法:GET .......当前路径,博客/博客文章,与其中任何一个都不匹配【英文标题】:Page not found (404) Request Method: GET ....... the current path, blog/blogpost, didn't match any of these 【发布时间】:2021-04-26 22:10:45 【问题描述】:

嗨,我正在尝试制作博客网站,但是当我在 views.py 中使用 blogpost 函数获取模型时,它显示错误,即找不到 404 页面,如 ||使用 mac.urls 中定义的 URLconf,Django 尝试了这些 URL模式,按以下顺序: admin/ shop/ blog/ [name='BlogHome'] blog 当前路径 blog/blogpost 与其中任何一个都不匹配。 ||

-直到我不创建模型它工作正常但是在创建模型并尝试通过 post_id 获取文章后它会抛出错误,因为找不到页面! -我错过了什么? - 这是我正在使用的代码。

blog/urls.py 的代码 ->

    from django.urls import path
from . import views

urlpatterns = [
    path(" ", views.index, name="ShopHome"),
    path("blogpost/<int:id>/", views.blogpost, name="blogpost")]
    

blog/Views.py 的代码 ->

from django.shortcuts import render
from .models import Blog

# Create your views here.
from django.http import HttpResponse

def index(request):
        return render(request, 'blog/index.html')

def blogpost(request,id):
    post= Blog.objects.filter (post_id=id)[0] 
    print(post)
    return render(request, 'blog/blogpost.html','post':post)

blog/adminpy 的代码 ->

from django.contrib import admin

from .models import Blog


admin.site.register(Blog)

blog/models.py 的代码 ->

from django.db import models

# Create your models here.
class Blog(models.Model):
    post_id = models.AutoField(primary_key= True)
    title = models.CharField(max_length=50)
    title0 = models.CharField(max_length=500,default='')
    title1= models.CharField(max_length=500,default='')
    title2= models.CharField(max_length=500,default='')
    Content_title= models.CharField(max_length=500,default='')
    Content_title0= models.CharField(max_length=500,default='')
    Content_title1= models.CharField(max_length=500,default='')
    Content_title2= models.CharField(max_length=500,default='')
    pub_date = models.DateField()
    image = models.ImageField(upload_to='shop/images', default="")

    def __str__(self):
        return self.title

【问题讨论】:

请发布实际代码而不是代码截图 在 url 中包含了 ' / ' 但没有得到相同的错误日志/blogpost// [name='blogpost'] 当前路径,blog/blogpost/,这些都不匹配。 因为您实际上必须在您的 url 中添加一个现有 blogpost 实例的 pk,请在下面查看我的答案 【参考方案1】:

您正在传递一个/&lt;int:id&gt;/(顺便说一句,您的网址中始终包含最后一个斜杠/)但您的路径显示 /blog/blogpost 带有 str参数,它应该是一个 int,表示 现有 Blogpost 实例的 id

【讨论】:

以上是关于找不到页面 (404) 请求方法:GET .......当前路径,博客/博客文章,与其中任何一个都不匹配的主要内容,如果未能解决你的问题,请参考以下文章

找不到页面 (404) 请求方法:GET 尝试单击另一个 .html 文件

Django 错误:找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/helpdesk/login/?next=/

找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/accounts/signup/signup

在 django、pycharm 中找不到页面?

Laravel 404错误,Laravel根目录可以访问,非根目录就会出现404 页面找不到的错误

Ruby Rails在HTTP GET请求中找不到404