URL 错误 404 找不到 Django 页面错误 x.html
Posted
技术标签:
【中文标题】URL 错误 404 找不到 Django 页面错误 x.html【英文标题】:URL error 404 Django page not found error x.html 【发布时间】:2021-11-03 11:36:05 【问题描述】:我还没有设法找到它给出错误的原因? 在 *** 中复制粘贴以获得 exp 的地方收到了很多答案
所以情况是我的 navbar.html 中的 URL 返回错误 404 找不到 x.html
这里是每个 py 文件的代码:
views.py:
from django.shortcuts import render, redirect
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings
from .forms import ContactForm
# Create your views here.
def home_page(request):
return render(request, 'index.html')
def education(request):
return render(request, 'Education.html')
def experience(request):
return render(request, 'Experience.html')
def portfolio(request):
return render(request, 'Portfolio.html')
setting.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '../blog_level/static')
STATICFILES_DIRS= [
os.path.join(BASE_DIR, 'static'),
]
navbar.html:
<ul class="u-align-center u-nav u-popupmenu-items u-unstyled u-nav-2"><li class="u-nav-item"><a class="u-button-style u-nav-link" href="% url 'homepage' %" style="padding: 10px 0px; text-shadow: 0 0 8px rgba(128,128,128,1);">Home</a>
</li><li class="u-nav-item"><a class="u-button-style u-nav-link" href="% url 'experience' %" style="padding: 10px 0px; text-shadow: 0 0 8px rgba(128,128,128,1);">Experience</a>
</li><li class="u-nav-item"><a class="u-button-style u-nav-link" href="% url 'education' %" style="padding: 10px 0px; text-shadow: 0 0 8px rgba(128,128,128,1);">Study</a>
</li><li class="u-nav-item"><a class="u-button-style u-nav-link" href="% url 'portfolio' %" style="padding: 10px 0px; text-shadow: 0 0 8px rgba(128,128,128,1);">Portfolio</a>
</li><li class="u-nav-item"><a class="u-button-style u-nav-link" href="% url 'homepage' %#sec-1120" data-page-id="134427998" style="padding: 10px 0px; text-shadow: 0 0 8px rgba(128,128,128,1);">Contact</a>
</li></ul>
blog_level\urls.py:
from django.contrib import admin
from django.urls import path, re_path
from . import views
urlpatterns = [
path('', views.home_page, name='homepage'),
path('education/', views.education, name='education'),
path('experience/', views.experience, name='experience'),
path('portfolio/', views.portfolio, name='portfolio'),
]
fist_website_app_level.py:
"""first_website_app_level URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('', include('blog_level.urls')),
]
下面是我的项目的文件结构@
请找出调试错误:
我还是不明白这个过程的错误为什么它不会链接到正确的页面,自然是基于以下专家在一个简单的项目级别。
https://github.com/CoreyMSchafer/code_snippets/blob/master/Django_Blog/03-Templates/django_project/blog/urls.py
【问题讨论】:
你应该访问/experience/
,而不是Experience.html
。
【参考方案1】:
您的网址错误: 而不是:
127.0.0.1:8000/Experience.html
使用:
127.0.0.1:8000/experience
因为您的视图中有“经验”:path('experience', ...)
【讨论】:
什么意思?当我点击体验时,它会加载 experience.html,所以我应该在哪里更改文件问题? 您应该访问 /experience/,而不是 Experience.html。所以删除 '.html',在 url 中,url 必须看起来像在你的路径('experience')中的'experience'。 什么 url.py 我有两个?? 我的意思是,您应该访问:127.0.0.1:8000/experience 而不是 127.0.0.1:8000/experience.html。不要添加点 html (.html),因为您的视图中有: path('experience', ...) 而不是 path('experience.html', ...) 我知道,这就是我要找的东西,但是你如何在代码中做到这一点?【参考方案2】:在Django
urls.py
是在views
和url
之间映射的文件,所以如果你想访问Experience.html
页面,你必须将url
设置为127.0.0.1:8000/experience
(什么都没有要更改代码,只需更新您在浏览器中使用的 URL),因为 urls.py
的映射为 path('experience/', views.experience, name='experience'),
Here 是一个很好的文档,介绍了 url 映射的工作原理。
【讨论】:
我有 2 个 url.py,一个来自 blog_level,一个来自 first_website_app_level,我应该在哪里更改? 你的 url.py 中没有什么可以改变的,你在浏览器中输入的 url 应该改为 127.0.0.1:8000/experience 我的 navbar.html 怎么样以上是关于URL 错误 404 找不到 Django 页面错误 x.html的主要内容,如果未能解决你的问题,请参考以下文章
如果在 django 的 urls.py 中找不到,则将任何 url 重定向到 404.html
找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/