从零开始学 django-2

URL

定义:Uniform Resource Locator

作用:定位互联网上某个资源的位置

格式:protocol :// hostname[:port] / path [?query][#fragment]

1
2
3
4
5
6
7
8
protocol:协议,有http,https,file(本地计算机上的文件,为file:///)等
hostname:域名或者ip
http默认端口为80
path:路由
[]内的内容可有可无
port:端口
query:传参,用&隔开,每个参数的名和值用'='隔开
fragment:信息片段,字符串,用于指定网络资源中的片段,直接定位到页面某一位置

Django处理URL请求

  1. django从配置文件中找到ROOT_URLCONF,找到主路由文件
  2. django加载主路由文件的urlpatterns变量
  3. 依次匹配urlpatterns(数组)的path,直到匹配成功再停止
  4. 匹配成功,调用对应的视图函数处理请求
  5. 匹配失败,返回404

视图函数

定义:用来接受浏览器请求并通过HttpResponse对象返回响应的函数。

语法:

1
2
3
4
from django.http import HttpResponse

def xxx(request[,其他参数]):
return HttpResponse对象

我们一般将视图函数写在views.py中

路由配置

path函数

导入:

1
from django.http import HttpResponse

语法:path(route,views,name=None)

参数:route:匹配的路径;views:对应的视图函数名称;name:为地址起别名;

path转换器

用于path传递变量

语法:<类型:自定义名>

1
path('page/<int:page>',views.xxx)

其中<int:page>为path转换器,page为变量名,int为变量类型

利用关键字传参的方式传递给视图函数

类型 作用
str 除’/‘外非空字符串
int 匹配0或任意正整数,返回一个int
slug 匹配任意由ACII字母或数字以及连字符和下划线组成的短标签
path 匹配非空字段,包括’/‘

re_path()

使用正则表达式进行精确的匹配

语法:re_path(reg,view,name=xxx)

正则表达式为命名分组模式(?P<name>pattern)

示例:

1
re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})$')