Django创建视图

  • 首先创建视图

在views.py中定义一个函数,用来处理请求,这个函数要接收request参数,并且返回HttpResponse对象,或者其子类的对象。

#views.py
from django.http import HttpResponse  #导入返回值的包
def index(request):  #函数名   index 
    return HttpResponse('
Django
')
  • 然后设置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就已经找不到了,何况表中表。

  • 一个路由表中包含了另一张路由表,另一张路由表还有可能会包含其他路由表,实现了模块化管理。

你可能感兴趣的:(Django创建视图)