- 首先创建视图
在views.py中定义一个函数,用来处理请求,这个函数要接收request参数,并且返回HttpResponse对象,或者其子类的对象。
#views.py
from django.http import HttpResponse #导入返回值的包
def index(request): #函数名 index
return HttpResponse('<center>Django<center/>')
- 然后设置url路由,让页面匹配到相应参数时可以调用这个视图中的方法。
在urls.py中导入你要使用的函数,然后设置匹配规则,最后将匹配规则与函数联系
#urls.py
from app.views import index #导入了上面视图中定义的函数index
urlpatterns = [
path('admin/', admin.site.urls), #默认出现的
path('index/',index), #前面的index是匹配规则,后面的时调用index函数。
#这个是可以自己修改的,但是统一比较好,因为调式代码的工作量减小。
]
-
最后居中显示了Django
这种路由的方式是比较不好的,所有的请求都来找着一个urls.py,所以我们为每一个app都创建一个路由表。
就好像你向前台问问题,他不会告诉你答案,只会告诉你去找某某某可以解决。
主程序的urls.py 配置‘找谁’,‘找哪一个urls’ app中的urls.py配置怎么做。
#某个app的urls.py
from django.conf.urls import url
#from django.urls import path #用path就不用url了
from app.views import index
urlpatterns = [
url('index/',index), #匹配到index,执行index操作
]
#最外层的urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app',include('app.urls')) #重点:不同就在这,他把请求指向了另一个路由表
#这个表就在app下的urls.py 类似与蜻蜓点水。
]
结合上面两段代码,就是,得到请求后在urlpatterns中找匹配,找到匹配'app'字符时,试图处理函数为(include( ' app.urls ' )) ,意思是让它去找app下的urls.py路由表,然后又匹配到'index' ,执行index函数
-
这时,地址栏有/app/index/才能匹配的上,只写index/是找不到的,因为在最外面的一层urls就已经找不到了,何况表中表。
-
一个路由表中包含了另一张路由表,另一张路由表还有可能会包含其他路由表,实现了模块化管理。
网友评论