自学Django Day2 (URL和视图函数)

一、URL

       Uniform Resource Locator:统一资源定位符

        用来表示互联网上某个资源的地址

        一般语法格式:protocol://hostname[:port]/path[?query][#fragment]

        protocol:协议

        hostname:域名

        port:端口 【默认80】

        path:路由 【精确网站下某一页面】

        ?query:精确查找

        #fragment:信息片段,快速定位网页内某一标题栏

二、Django如何处理URL请求

        例如:http://127.0.0.1:8000/page/Yddd

        1.Django从配置文件中根据ROOT_URLCONF找到主路由文件,默认在同名目录下urls.py

        2.Django加载主路由文件中的urlpatterns变量(列表)-包含很多路由。(引用官方文档例)

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

        3.依次匹配urlpatterns中的path,匹配到第一个合适的中断后续匹配

        4.匹配成功 - 调用对应的视图函数处理请求,返回响应

        5.匹配失败 - 返回404响应

三、视图函数

        用于接收一个浏览器请求(HttpRequest对象)并通过HttpResponse对象返回响应的函数。此函数可以接收浏览器请求并根据业务逻辑返回相应的响应内容给浏览器。

        1.语法:

def xxx_view(request[,其它参数...]):
    return HttpResponse对象

        第一个参数必须是request

        必须return HttpResponse对象

        2.样例

<项目同名文件夹下>/views.py

from django.http import HttpResponse

def pageYddd_View(request):
    html = "<h1>这是第1个页面</h1>"
    return HttpResponse(html)

四、路由配置

        1.path() 函数

                导入  -  from django.urls import path

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

                        route:字符串类型,匹配的请求路径

                        views:指定路径所对应的视图处理函数的名称

                        name:为地址起别名,在模板中地址反向解析时使用 (为第一个参数起别名)

        2.path 转换器

                语法:<转换器类型:自定义名>

                作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数。

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

         3.re_path()函数

                re:正则表达式,在url匹配中可以使用正则表达式进行精确匹配。

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

                正则表达式为命名分组模式(?P<name>pattern);匹配提取参数后用关键字传参方式传递给视图函数。

    # 正则表达式匹配 http://127.0.0.1:8000/整数1/操作符/整数2     ^:开始 , $:结束
    re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})$', views.cal2_view),

        练习:匹配如下网址:http://127.0.0.1:8000/birthday/年4/月2/日2

                   输出为:您的生日是:XXXX年XX月XX日

    # http://127.0.0.1:8000/birthday/年4/月2/日2
    re_path(r'^birthday/(?P<y>\d{4})/(?P<m>\d{1,2})/(?P<d>\d{1,2})$', views.birthday_view),
    # http://127.0.0.1:8000/birthday/月2/日2/年4
    re_path(r'^birthday/(?P<m>\d{1,2})/(?P<d>\d{1,2})/(?P<y>\d{4})$', views.birthday_view)

        

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值