Django基础(3): 配置url

陆续更新中:
Django基础(1): 目录文件简介
Django基础(2): 创建应用
Django基础(3): 配置url
Django基础(4): 建立Templates

django项目中所有的地址页面都需要在urls.py中配置url。Django默认提供了3种url的配置方法,如图1:
Django基础(3): 配置url_第1张图片
图1

使用函数配置url

在这里简单介绍一下上图中的第一种方法,即使用函数来配置url:

  1. 首先需要import我所创建的APP的Views文件,即
    Import my_app.views
  2. 在url中配置path,其中,''是你在APP.views中定义的用于响应的函数,有3个参数,第1个是url本身,即地址。注意在写这个Url的时候,最好默认在url后面加上/,这样会减少出现错误的可能性。第2个参数是该url地址对应的响应方法,即在my_app.views中创建的响应函数,比如我在app.views中创建了一个名为index的响应请求的函数:
def index(request):
    return HttpResponse('Hello, World')

那么对应的url配置可以这样写:

import my_app.views as mv
urlpatterns = [
      path('index/', mv.index),
]

第3个参数是url的名称,可不配置
以上代码完成后,在terminal中输入python manage.py server,看到运行结果后,在地址栏中输入http://127.0.0.1:8000/index/,就可以看到Hello, world已经被打印出来了

更常用的方法:包含其他的url配置文件

在项目文件变得非常庞大时,app会非常多,使用上诉的第一种方法会使得文件变得庞大,而且也增加了各url命名冲突的风险,为了避免这种情况,往往推荐使用另一种方法配置Url,也就是图1中的第3种方法,使用其他的url来配置
1. 在跟urls.py中引入Include()
from django.urls import path, include
2. 将前面方法中提到的mv.index改写为include('myapp.urls')
对应的url配置文件写成:

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

import my_app.views as mv
urlpatterns = [
      path('index/', include('myapp.urls')),
]

3.在APP目录下创建urls.py文件,格式与根urls.py相同
注意到现在myapp文件夹下面是没有urls这个模块的,所以我们需要在myapp文件夹下新建一个urls.py,然后把我们在上一种方法中配置的url写进去,下面代码中的Index指向的是前面编写的Index的响应函数

from django.urls import path, include

from . import views

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

然后尝试在terminal中运行python manage.py server, 就可以看到运行成功的结果了,注意在这里,跟urls.py针对APP配置的URL名称,是该APP所有URL的总路径,所以需要在地址栏中输入两个Index,即http://127.0.0.1:8000/index/index/,这样才可以得到和第一种方法一致的结果。如果不想要两个Index后缀,可以修改myapp下面的url,把path中的index/去掉:

from django.urls import path, include

from . import views

urlpatterns = [
    path('', views.index),
]

此时,在地址栏中就只需要输入一个index了:http://127.0.0.1:8000/index/

注意事项

  1. 在旧版本的django中,还需要对path使用正则表达式进行约束,否则会出现在链接后随意加后缀名也返回当前页面的情况,需要写成
    path(r'^$', views.index)
    使用^$确保在后面没有后缀名的情况下才显示当前页面
  2. 配置URL时注意以‘/’结尾,养成习惯

你可能感兴趣的:(Django基础(3): 配置url)