今天的学习笔记记录开始了.
安排~~~
继前几天学习的笔记.django项目的创建django项目的创建.
今天进一步学习django项目应用创建.和使用,但是这之前我们的明白一下东西.
且今天学习的配置都是基于上次学习之后,未更改.
目录
(3)re_path() :带参路由 这是基于正则匹配的路由配置
一, django的视图函数
视图函数有时候也叫类函数. 因为后期学习视图函数将大部分是以类的方式创建的.
视图函数是用于接收一个浏览器请求(HttpRequest对象)并通过HttpResponse对象返回响应的函数。此函数可以接受浏览器请求并根据业务逻辑返回相应的响应内容给浏览器.
语法:
def XXX(request):
return HttpResponse(对象)
# 1.导包
from django.http import HttpResponse
# 2.创建视图函数
"""
这里dome_01为函数名,可以自定义.但是后面括号的request对象不能少.
"""
def dome_01(request):
html = "<h1>这是我的第一个页面</h1>"
return HttpResponse(html) # 这里的html 为HttpResponse返回给浏览器的一个响应
# 好了,一个简单的视图函数就完成了
二, 路由的配置
(今天的路由将都写在主路由下) 一般主路由只起分发子路由的作用.今天不涉及应用就不需要
创建子路由.这里的django_pro 为主项目,其下面的urls.py为主路由.
路由配置在urls.py这个文件中.
(1), 不带参路由
# 1. 导包 from django.contrib import admin # 这个是导入django后台管理 from django.urls import path """ 需要导入视图函数 dome_01, 所有 导包 """ from . import view # 因为是同级目录所有用 . 代替上级目录导入view这个包 # 2.路由添加 """ path()函数 path(route,views,name) 参数: 1、route:字符串类型,匹配的请求路径 2、views:指定路径所对应的试图处理函数的名称 3、name:为地址起别名,在模板中url反向解析时使用(难点) path('路由名/', 调用视图函数) 路由名后面的 / 有时候要有时候不要.一般是在路由需要拼接的时候不要,因为url拼接的,有时候会出现 XXX/ + /XXX 变成 XXX//XXX .但是在用url访问页面的时候一般路由不会写 双 // 所有匹配不到路由找不到网页. """ urlpatterns = [ path('admin/', admin.site.urls), # 这个是django后台管理路由 path('dome01/', view.dome_01), # 这个是刚刚自己创建的路由 !!!注意这里调用视图函数不能加() ] # 路由配置好了,运行django.去url访问
(2), 带参数路由
from django.contrib import admin from django.urls import path, re_path from . import views """ 语法 <类型: 参数名> 作用: 若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数 """ # 咱们现在看一个例子 """ !!! 路由与路由之间一定用 ,隔开 """ urlpatterns = [ path('dome02/<int: a>', views.dome_02), path('dome03/<int: a>/<str: name>', views.dome_03), ]
views.py中的dome02,和dome03.函数
from django.http import HttpResponse def dome_02(request, a): html = '情话语录: {}'.format(a) return HttpResponse(html) def dome_03(request, a, name): html = '%d.我喜欢%s' % (a, name) return HttpResponse(html)
(3)re_path() :带参路由 这是基于正则匹配的路由配置
url.py下的配置
from django.urls import path, re_path """ re_path(r'^XXX $', view, name=xxx) # name=xxx 一般用于url反向解析今天暂时不用. ^ 为正则开头, $为结尾 (?P<参数名>条件}) 固定格式. 这里的条件是正则匹配的条件,满足即可匹配. """ urlpatterns = [ p