5.1 路由 视图 html文件的关系
url.py里面的url地址,会路由到view的方法,view的方法会返回html页面
url路由可以使用二级路由,即:访问地址 = 项目url + app的url
设置二级路由的话,需要在app里面也建立一个url.py
我们为了简单,而且项目也没那个必要(只有一个app),只用一级路由就可以了。
直接编辑项目项目的url.py
-
#导入需要路由的view
-
from testapp import views
-
-
#urlpatterns里面添加
-
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中。
参数传递
举个例子:
-
html的一个链接:
-
可以是动态
-
<li><a href="/ui_mid_case/{{ ui_case_big_dic.big_id }}"><i class="ti-pencil"></i>管理用例中类</a></li>
-
也可以是静态的:
-
<li><a href="/ui_mid_case/ID001"><i class="ti-pencil"></i>管理用例中类</a></li>
-
urls.py:
-
#捕获/ui_mid_case/ID001,并把 ID001 传递给变量 big_case_id,
-
path('ui_mid_case/', ui_views.ui_mid_case, name='ui_mid_case'),
-
-
views.py
-
def ui_mid_case(request, big_case_id=""):
-
print("big_case_id:===", big_case_id)
其中:
中的slug可以根据实际需要更换
url参数的转换器:
str:除了斜杠/以外所有的字符都是可以的。
int:只有是一个或者多个的阿拉伯数字。
path:所有的字符都是满足的。
uuid:只有满足uuid.uuid4()这个函数返回的字符串的格式。
slug:英文中的横杆或者英文字符或者阿拉伯数字或者下划线才满足。
阅读(31047) | 评论(0) | 转发(0) |