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

简介: 05-Django-基础篇-视图和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)
]
相关文章
|
5月前
|
Python
Django——视图
Django——视图
|
3月前
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
60 2
|
3月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
24 1
|
2月前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
3月前
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
47 0
|
3月前
|
安全 API Python
Django 如何使用视图动态输出 CSV 以及 PDF
Django 如何使用视图动态输出 CSV 以及 PDF
45 4
|
3月前
|
Linux Shell 数据库
python Django教程 之 安装、基本命令、视图与网站
python Django教程 之 安装、基本命令、视图与网站
|
4月前
|
API 数据库 数据安全/隐私保护
Django配置api、管理系统和视图
Django配置api、管理系统和视图
107 1
|
3月前
|
测试技术 Shell 数据库
Django视图测试:构建可靠Web应用的关键步骤
Django视图测试:构建可靠Web应用的关键步骤
28 0
|
5月前
|
安全 API Python
Django 如何使用视图动态输出 CSV 以及 PDF
这一篇我们需要用到 python 的 csv 和 reportLab 库,通过django视图来定义输出我们需要的 csv 或者 pdf 文件。