URL与视图的关系
简单理解为,你输入www.baidu.com(URL),回车》》返回百度的页面(view视图)。
Django中约定URL是在项目同名目录下的urls.py文件里urlpatterns列表构造的。
1)urlpatterns的参数意义如下
myblog/myblog/urls.py
urlpatterns = [
path('counter/<int:pk>/', ArticleCounterRedirectView.as_view(), name='article-counter'),
path('details/<int:pk>/', ArticleDetailView.as_view(), name='article-detail'),
path('go-to-django/', RedirectView.as_view(url='https://www.djangoproject.com/'), name='go-to-django'),
]
解释:-------------------------------------
urlpatterns = [ path(正则表达式, views视图函数,参数,别名), ] 括号里的参数说明: 1、一个正则表达式字符串 2、一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 3、可选的要传递给视图函数的默认参数(字典形式) 4、一个可选的name参数(别名)
2)URL例子,要构造三个URL
首页(http://www.bai.com/)、新闻(http://www.bai.com/news/)、地图(http://www.bai.com/map/),把第一个参数改成如下
urlpatterns = [ path('', views.index), #里面留空,匹配空,代表首页 path('news/',views.news),#news path('map/',views.bbs),#map ]
APP应用里的视图在》APP目录下views.py文件里。
APP应用的URL在》项目目录下的 urls.py文件,然后里通过下面的方式导入。
urls.py
from APP应用名 import views from APP应用名.vews import 函数名或类名
注:视图函数就是一个Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。。。。这个视图函数代码一般约定是放置在项目或应用程序目录中的名为views.py的文件中。
3)VIEW + URL组合使用
- VIEW操作在APP里:打开bolg目录下的views.py文件,写一个hello视图函数,在里面输入:
from django.http import HttpResponse def hi(request): """ 写一个hello函数,通过request接收URL或者说是http请求信息, 然后给这个请求返回一个HttpResponse对象 """ return HttpResponse('hi world!')
例子里,我们用到的request,就是HttpRequest对象。HttpResponse("欢迎使用Django!"),就是HttpRequest对象,它向http请求响应了一段字符串对象。
- URL操作在同项目名的目录下:打开myblog目录下的urls.py文件中先导入视图函数,然后构造一个URL,代码如下:
from blog import views #导入视图函数 urlpatterns = [ ... path('', views.hi), #这个是我们构造的URL ]
代码写完之后,启动项目就可以在浏览器里看到视图函数返回的字符串"hi world!"
每一个URL都会对应一个视图函数,当一个用户请求访问Django站点的一个页面时,然后就由Django路由系统(URL配置文件)去决定要执行哪个视图函数使用的算法。
通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串)这个过程也就是我们Django请求的生命周期。
视图函数,就是围绕着HttpRequest和HttpResponse这两个对象进行的。