Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2279703
  • 博文数量: 297
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2200
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(297)

分类: Python/Ruby

2020-08-04 11:59:25

5.1 路由 视图 html文件的关系

url.py里面的url地址,会路由到view的方法,view的方法会返回html页面

url路由可以使用二级路由,即:访问地址 = 项目url + app的url
设置二级路由的话,需要在app里面也建立一个url.py
我们为了简单,而且项目也没那个必要(只有一个app),只用一级路由就可以了。
直接编辑项目项目的url.py

  1. #导入需要路由的view
  2. from testapp import views

  3. #urlpatterns里面添加
  4. path('main/', views.main, name='main'),

django如何处理请求
当用户请求一个页面时,Django根据下面的逻辑执行操作:
1. 查找映射,去哪里查找映射呢?去settings.py文件中查找ROOT_URLCONF字段,该字段的默认值是 urls.py ,所以一般都会去urls.py里找映射。
     但是如果传入的HttpRequest对象具有urlconf属性(由中间件设置),则其值将被用于代替ROOT_URLCONF设置。通俗的讲,就是你可以自定义项目入口url是哪个文件!
      加载该模块并寻找可用的urlpatterns。 它是django.conf.urls.url()实例的一个列表。
2. 在urls.py中查找 urlpatterns这个变量。映射是放在path函数或者是re_path函数进行包装的。
依次匹配每个URL模式,在与请求的URL相匹配的第一个模式停下来。也就是说,url匹配是从上往下的短路操作,所以url在列表中的位置非常关键。
3. 匹配到之后,调用匹配行中给定的视图,该视图是一个简单的Python函数(被称为视图函数),或基于类的视图。 一般是放在view.py中。

参数传递

举个例子:

  1. html的一个链接:
  2. 可以是动态
  3. <li><a href="/ui_mid_case/{{ ui_case_big_dic.big_id }}"><i class="ti-pencil"></i>管理用例中类</a></li>
  4. 也可以是静态的:
  5. <li><a href="/ui_mid_case/ID001"><i class="ti-pencil"></i>管理用例中类</a></li>
  1. urls.py:
  2. #捕获/ui_mid_case/ID001,并把 ID001 传递给变量 big_case_id,
  3. path('ui_mid_case/', ui_views.ui_mid_case, name='ui_mid_case'),

  4. views.py
  5. def ui_mid_case(request, big_case_id=""):
  6.     print("big_case_id:===", big_case_id)
其中:
中的slug可以根据实际需要更换
url参数的转换器:
    str:除了斜杠/以外所有的字符都是可以的。
    int:只有是一个或者多个的阿拉伯数字。
    path:所有的字符都是满足的。
    uuid:只有满足uuid.uuid4()这个函数返回的字符串的格式。
    slug:英文中的横杆或者英文字符或者阿拉伯数字或者下划线才满足。

阅读(31047) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~