Django-4.2博客开发教程:URL与视图函数(八)

发布时间 2023-08-04 16:25:56作者: 白灰

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这两个对象进行的。