1 什么是URL

URL的构成

  1. http://127.0.0.1:8000/hello/
  2. URL解释:
  3. schema://host[:port#]/path/.../[?query-string][#anchor]
  4. schema:指定使用的协议(例如:http, https, ftp)
  5. hostHttp服务器的IP地址或者域名
  6. port:端口号,http默认是80端口
  7. path:访问资源的路径
  8. query-string:发送给http服务器的数据
  9. anchor:锚点#

urls.py文件的作用

可以理解为,当项目运行时,负责管理项目的文件settings.py调用指定的文件目录,该表会告诉项目有那些子网页需要运行,以及各有何种配置。

URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码。url的加载就是从配置文件中开始 ;

image.png

URL的特点

1 urlpatterns是固定的写法,它的值是列表;

2 我们在浏览器输入的路径会和urlpatterns中的每一项进行匹配,顺序是从左至右,从上至下;

3 匹配成功,则直接引导至响应的模块,如果匹配不成功则返回404。

  1. urlpatterns = [
  2. url(r'^$ ' ,index),
  3. #匹配书籍列表信息的URL,调用对应的bookList视图url(r'^booklist/$' , bookList,name='index ' ),
  4. url(r' testproject/$ ' ,views.testproject,name='test'),
  5. ]
  6. // 版本1
  7. url(r'^' ,include( " book.urls ',namespace= " book ' ))
  8. // 版本2

标识符和匹配规则介绍

开始思考思路就错了,不是因为元素,比如协议,端口号和IP不需要匹配从元素的特性出发,正确的思维应该是人为控制引导匹配;

  1. 3.urlpatterns中的元素,就是url
  2. 3.urlatterns中的元素,就是url
  3. url的第一个参数,正则,r转义,^严格的开始,$严格的结尾4.我们在浏览器中哪些部分参与了正则匹配?
  4. Url的第一个参数,正则,r转义,^严格的开始,$严格的结尾4.我们在浏览器中哪些部分参与了正则匹配?
  5. http://ip:port/path/?key=valure
  6. Http://ip:port/path/?key=valure
  7. htttp://ip:port/path/admin/a=100/总结:协议,ip和端口,参数不参与匹配
  8. Htttp//ip:port/path/admin/a=100/总结:协议,IP和端口,参数不参与匹配
  9. // 这三个存在变化,协议有两种选择,IP随着用户访问地址的不同而不同
  10. // 端口号一般跟着协议走,或者自定义
  11. 5.如果和当前的某一个匹配成功,则引导我们的子应用继续匹配,如果匹配成功,则停止匹配返回响应
  12. 5.如果和当前的某一个匹配成功,则引导我们的子应用继续匹配,如果匹配成功,则停止匹配返回响应
  13. 如果匹配不成功,则继承和后边的工程中的url的每一项继续进行匹配,直到匹配到每一项
  14. 如果匹配不成功,则继承和后边的工程中的url的每一项继续进行匹配,直到匹配到每一项
  15. 如果没有匹配到,返回404
  16. 如果没有匹配到,返回404

子应用的构成元素

  1. from django.conf inport url
  2. from book.views inport index
  3. urlpatterns=[
  4. url(r'^index/$',views.index) # url中的第一个参数就是:正则;第二个参数函数名。
  5. ]

项目创建逻辑和关联文件的关系

01,先在子项目urls.py文件中,将访问路径定位到主项目文件的路径,同时指定除了admin以外的所有访问均导入到改子项目控件(所以从结构看,主项目与子项目的urls.py是父子关系)
在该步骤下,需要在子项目文件导入以及书写如下代码

  1. from django.contrib import admin
  2. from django.urls import path, include
  3. urlpatterns = [
  4. path('admin/', admin.site.urls),
  5. path('', include('TZ.urls')) # 除了对admin页面的访问以外均将请求导入到该页面
  6. ]

在该步骤下,需要在主项目文件导入以及书写如下代码

urls.py示例代码

image.png

views.py示例代码

image.png

在项目中创建子项目

image.png

2 path和re_path

在测试项目中导入主项目的URL

image.png

在主项目views文件中创建内容

image.png

3 模板路径配置

4 模板渲染方式