05-Django-基础篇-视图和URL

本文介绍了Django的视图和路由概念,包括视图的定义(作为处理HTTP请求的Python函数)、URLconf的配置(用于匹配URL并调用相应视图),以及URL配置规则(如path、re_path和url的区别)。同时,讲解了动态URL的实现,展示了如何通过正则表达式匹配参数并传递给视图函数。


前言

  • 本篇来学习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

查找视图的过程 :

  1. 请求者在浏览器地址栏中输入URL, 请求到网站.
  2. 网站获取URL信息.
  3. 然后与编写好的URLconf逐条匹配.
  4. 如果匹配成功则调用对应的视图.
  5. 如果所有的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),
]
动态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)
]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值