django 2.2.x及以后版本的路由分发(include)

django 2.2.x及以后版本的路由分发(include)

今天在学django的时候,一开始直接在根目录的urls.py里面直接用了path()函数进行路由配置

from django.contrib import admin
from django.urls import path
from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', views.hello),
]

网页可以正常显示:
无分发正常

但是看着别人说路由分发更好用一点,于是按照别人的代码改了一下代码:
需要在自己的app目录下也创建一个urls.py进行路由分发的配置:

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

urlpatterns = [
    path(r'hello/', views.hello),
]

但是报错:

    from django.conf.urls import url
ImportError: cannot import name 'url' from 'django.conf.urls'

于是我开始到处搜资料,搜了很久,别人的代码都是这样写的,但是我的就是没有(我的是django 4.0),最后才看到,原来从django 2.2.x开始,url()就被删除了,于是我用了之前的path()函数:

from api import views
from django.urls import path

urlpatterns = [
    path(r'hello/', views.hello),
]

终于不再报错了,然后我对照着我看的视频,把根目录的urls.py改了:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('api.urls')),
]

此时跑起来django没有报错,但是打开网页一看404了,一开始我以为是app目录下的urls.py用了path()函数导致的,但是一直不知道怎么改,直到我仔细看了网页的错误提示:
在这里插入图片描述
才发现原来是根目录下urls.py里面的path()函数不需要再加路径了,修改方式有两种:

  • 一种是根目录urls.py的path()函数的第一个参数设置为空字符串:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('api.urls')),
]

在这里插入图片描述

  • 另一种是在网页访问时加上’api/’,即可:
    在这里插入图片描述
    这些问题都挺无脑的,没这方面经验,所以被低级错误困扰了很久,希望大家不喜勿喷,欢迎大佬指正,也希望对大家有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谛凌

本人水平有限,感谢您支持与指正

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值