前言
- 本篇来学习Django的视图和路由
视图
- 使用视图时需要进行两步操作
1. 定义视图
- 视图就是一个Python函数,被定义在应用的views.py中.
- 视图的第一个参数是HttpRequest类型的对象reqeust,包含了所有请求信息.
- 视图必须返回HttpResponse对象,包含返回给请求者的响应信息.
- 需要导入HttpResponse模块 :from django.http import HttpResponse
# views.py
from django.http import HttpResponse
# Create your views here.
# 定义视图
def index():
return HttpResponse('index')
2. 配置URLconf
查找视图的过程 :
- 请求者在浏览器地址栏中输入URL, 请求到网站.
- 网站获取URL信息.
- 然后与编写好的URLconf逐条匹配.
- 如果匹配成功则调用对应的视图.
- 如果所有的URLconf都没有匹配成功.则返回404错误.
URL配置
1.在项目中定义URLconf
# 项目中的urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('book.urls'))
]
2.在应用中定义URLconf
# 应用中新建urls.py
# -*- coding: utf-8 -*-
# @Time : 2022/7/10
# @Author : 大海
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版本推荐
# book\urls.py
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),
]
- 在浏览器上访问 http://127.0.0.1:8000/index/, http://127.0.0.1:8000/, http://127.0.0.1:8000/demo/ 都能正确访问到对应内容。
动态URL
# urls.py
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) # \d+ 正则匹配,匹配任意数字
]
# views.py
def date_time(request, year, month):
return HttpResponse("获取当前页面home时间标签:%s年/%s月" % (year, month))
# urls.py
urlpatterns = [
url(r'^demo/$', views.demo),
path("index/", views.index),
re_path('^$', views.index),
url('^demo/page=\d+$', views.demo), # \d+ 正则匹配,匹配任意数字
path('archive/<year>/<month>', views.date_time),
url(r'^archive1/(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})$', views.date_time)
]
本文介绍了Django的视图和路由概念,包括视图的定义(作为处理HTTP请求的Python函数)、URLconf的配置(用于匹配URL并调用相应视图),以及URL配置规则(如path、re_path和url的区别)。同时,讲解了动态URL的实现,展示了如何通过正则表达式匹配参数并传递给视图函数。
527

被折叠的 条评论
为什么被折叠?



