前言
视图
1. 定义视图
- 视图就是一个Python函数,被定义在应用的views.py中.
- 视图的第一个参数是HttpRequest类型的对象reqeust,包含了所有请求信息.
- 视图必须返回HttpResponse对象,包含返回给请求者的响应信息.
- 需要导入HttpResponse模块 :from django.http import HttpResponse
from django.http import HttpResponse
def index():
return HttpResponse('index')
2. 配置URLconf
查找视图的过程 :
- 请求者在浏览器地址栏中输入URL, 请求到网站.
- 网站获取URL信息.
- 然后与编写好的URLconf逐条匹配.
- 如果匹配成功则调用对应的视图.
- 如果所有的URLconf都没有匹配成功.则返回404错误.
URL配置 1.在项目中定义URLconf
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('book.urls'))
]
2.在应用中定义URLconf
from django.conf.urls import url
from book import views
urlpatterns = [
url(r'^$', views.index),
]
视图处理过程
URL
配置规则
配置主要有三个:path、re_path、url,接下来具体分析下这三个有什么区别。
- path 只能绝对匹配路径地址,不支持正则匹配
- re_path 支持正则匹配,django 1.x版本常用
- url 支持正则匹配,实际上就是return re_path, django2.x版本推荐
from django.conf.urls import url
from django.urls import path, re_path
from book import views
urlpatterns = [
url(r'^demo/$', views.demo),
path("index/", views.index),
re_path('^$', views.index),
]
动态URL
from django.conf.urls import url
from django.urls import path, re_path
from book import views
urlpatterns = [
url(r'^demo/$', views.demo),
path("index/", views.index),
re_path('^$', views.index),
url('^demo/page=\d+$', views.demo)
]
def date_time(request, year, month):
return HttpResponse("获取当前页面home时间标签:%s年/%s月" % (year, month))
urlpatterns = [
url(r'^demo/$', views.demo),
path("index/", views.index),
re_path('^$', views.index),
url('^demo/page=\d+$', views.demo),
path('archive/<year>/<month>', views.date_time),
url(r'^archive1/(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})$', views.date_time)
]
|