当前路径,About.html与django中的任何一个都不匹配

时间:2018-06-22 10:23:33

标签: django django-models django-forms django-templates django-views

from django.conf.urls import url
from .import views

urlpatterns = [
    url(r'^$', views.index,name='index'),
    url(r'^About/', views.About,name='About'),
    url(r'^checkout/', views.checkout,name='checkout'),
    url(r'^contact', views.contact,name='contact'),
    url(r'^faqs', views.faqs,name='faqs'),
    url(r'^help', views.help,name='help'),
    url(r'^icons', views.icons,name='icons'),
    url(r'^payment', views.payment,name='payment'),
    url(r'^privacy', views.privacy,name='privacy'),

]

错误消息:

Page not found (404)
Request Method:
GET
Request URL:
http://127.0.0.1:8000/About.html
Using the URLconf defined in shop.urls, Django tried these URL patterns, 
in this order: 
admin/ 
^$ [name='index'] 
^about/$ [name='about'] 
^checkout/$ [name='checkout'] 
^contact/$ [name='contact'] 
^static\/(?P<path>.*)$ 
The current path, About.html, didn't match any of these. 

4 个答案:

答案 0 :(得分:3)

这种错误可能在2个或3个不同的情况下发生。 就您而言,您似乎在浏览器地址栏中输入了错误的URL。

您正确的URL应该为http://127.0.0.1:8000/About(如您在URL模式中所写)。

请记住,About.html-是您在模板文件夹中创建的HTML模板。即使您路由到html页面(使用诸如app_name / About.html之类的字符串)-地址栏中的实际URL仍将根据您在正则表达式路径r'^ url_name'中编写的内容来确定。如果以url模式编写r'^ About.html',那么http://127.0.0.1:8000/About.html应该可以正常工作。

第二种情况(根据我的经验)可能会产生这种类型的错误,是当您忘记在相应的views.py文件中的定义URL视图的方法内部传递“ request”参数时。

您应该有一个名为About的方法,它在views.py
中看起来像这样     def About(要求):     返回render(request,'app_name / About.html')

如果您忘记在About主题中传递参数,则可能会发生这种错误。

最后,如果您使用的是django 2,请开始使用re_path方法提供正则表达式网址格式。 url方法可能在将来的版本中被弃用。

引用re_path documentation

答案 1 :(得分:1)

您的URL不会是http://127.0.0.1:8000/About.html,而只会是http://127.0.0.1:8000/about(记住url不区分大小写),这将带您进入名为About的视图,在该视图中,您应该引用模板呈现(about.html)

您是否已阅读我的第一个Django应用https://docs.djangoproject.com/en/2.0/intro/tutorial01/,如果您不熟悉django的操作方式,那么这是一个很好的起点

答案 2 :(得分:1)

您要输入的内容不是有效的网址,您必须按urls.py 中的说明输入http://127.0.0.1:8000/About

您必须了解url和html模板之间的区别,该 About.html 将在渲染时用于视图中,例如:

return render(request, 'your_app/about.html')

如果可以这样,请确保可以写一个URL:

urlpatterns = [
url(r'^$', views.index,name='index'),
url(r'^About.html/', views.About,name='About'),
.
.
]

Check the documentation

答案 3 :(得分:0)

您在url()方法中提供的url不包含任何.html后缀

您可以通过/ About

直接转到“关于”页面