【django】Using the URLconf defined in MySite.urls, Django tried these URL patterns, urls配置错误页面跳转失败

【python 版本】3.7       【django版本】3.0

【项目结构】

小声bb:我在网上找了很多解决方法,感觉都大同小异的,但是都没能解决我的问题,我的错误应该是其中的一种,希望能帮和我错一样的人解决。

一、报错信息 

Page not found (404)

Request Method:GET
Request URL:http://127.0.0.1:8000/templates/description.html

Using the URLconf defined in MySite.urls, Django tried these URL patterns, in this order:

  1. ^$
  2. ^$

The current path, templates/description.html, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

二、错误描述

    我的功能是点击一个按钮从index页面跳转到description页面,但是不管我怎么改路径总是报错。

    以下是我的代码(按按钮跳转),按这个按钮可以跳转到description的页面。

<a href="/templates/description.html">
    <button>跳转</button>
</a>

    我的urls和view都配置好了的。

三、错误代码

    在我的urls.py中,我的代码是

from django.conf.urls import url

from . import view
 
urlpatterns = [
    url(r'^$', view.index), #^$意思是以任意字母开头
    url(r'^$', view.des),
]

    对应的view.py里面是

from django.shortcuts import render

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

def des(request):
    return render(request, 'description.html')

    我本来的想法是,一打开127.(省略)就进入主页,然后在后面点击按钮进入description页面。

四、错误原因

    关键在于对urls.py里面的urlpatterns的理解错误,按照我的错误代码电脑解析的是遇见第一个任意的url,执行view中的index类,因此跳转到index页面,而我这里的第二个url(r'^$')不会有机会执行!因此电脑会报错!因为电脑在解析按钮跳转的<a>时,根据urlpatterns按顺序匹配到的是第一个,执行的是index类,而在index类中没有description.html,因此报错找不到!

五、错误改正

    知道了错误原因就很好办了,将urls.py中的第二个url改成

url(r'^templates', view.des),

    即修改后的urls.py为

from django.conf.urls import url

from . import view
 
urlpatterns = [
    url(r'^$', view.index),
    url(r'^templates', view.des), #意思是以templates开头的路径
]

    这样在遇到<a href="/templates/description.html">时系统会自行匹配到第二个url,因此会执行view中的des类,页面就可以跳转了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值