下面是本项目所使用的URL中的一部分【task_tool/urls.py】
# -*- coding: utf-8 -*-
from django.conf.urls import url
from . import views
app_name = 'task_tool'
urlpatterns = [
# url(r'^mytest/$', views.mytest, name='mytest'),
url(r'^login/$', views.login, name='login'),
url(r'^([0-9]+)/index/$', views.teacher_index, name='teacher_index'),
url(r'^(?P<user_id>[0-9]+)/teacher_task_list_detail/$', views.teacher_task_list_detail,
name='teacher_task_list_detail'),
url(r'^(?P<user_id>[0-9]+)/(?P<task_id>[0-9]+)/teacher_task_list_detail/$', views.delete_task,
name='delete_task'),
......
]
url的第一个参数使用正则表达式匹配用户的请求,第二个参数对应用于处理该请求的函数。用户的请求会从第一个url函数中的正则表达式开始匹配,如果第一个匹配失败,则往下面开始匹配,直到匹配成功。如果匹配到最后一个还是失败,则返回404页面。
一旦其中一个匹配成功,该请求就会由第二个参数所指向的函数【task_tool/views.py】进行处理。
例如:如果用户请求http://127.0.0.1:8000/task_tool/2/index/
Django会调用函数task_tool.views.teacher_index(request, '2')。teacher_index函数也会得到一个request对象,该对象包含了request metadata。