################## 路由系统 #######################
################## 路由系统 #######################
################## 路由系统 #######################
################## 路由系统 #######################
################## 路由系统 #######################
路由系统,url.py
from django.conf.urls import url
urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
前两个用的最多,第三个参数基本不用,别名在反向解析的时候有用,
就是路径和函数的对应关系,
路由系统可以看成支撑你这个网站的目录,就像是一本书一样,
这个url对应关系,就是路由系统,
1,在django2.0中不再是url,而是path,其他的都一样,
2,url里面有四个部分,url(正则表达式,函数,参数,别名)
3,正则表达式,这一个就可以玩出很多的花样来,有时间需要再研究一下正则表达式,这个很有用,
可以把参数写成正则表达式的形式,这个有时间后面看看,
4,分组匹配,相当于给视图传递位置参数
5,可以分组命名匹配,相当于给视图传递关键字参数,
两个不能混着用,会覆盖的,
这两个我总感觉以后做项目的时候会经常用到,到公司了之后要看看前辈怎么写的,
--------------------------------------------------
现在写的路由文件,都是在一个文件写的,是在项目的url.py文件写的,
如果app,多了之后,就要做分组了,
现在新建一个app,怎么添加一个新的app?
下面回顾一下,
1,先新建,python manage.py startapp app02
2,第二步,在setting里面告诉django我新建了一个app
url(r'^app01/', include(urls))
#先从一级路由开始找,然后到二级路由,
#这种在项目中app比较多的时候会用到,没有必要非要用这种形式,写代码不需要一定要用上,有多个app的时候用,如果只有一个app不需要用这个,
# 这个时候访问的时路径就不应该直接是book了,需要在前面加上app01
-------------------------------------------------------
反向解析URL,
模板下面可以添加文件夹,只是到时候跳转的时候把文件夹写上而已,就是这么简单,
url现在很多都是写死的,但是如果动了之后很容易影响一大片,怎么办?
可以对url起一个别名,然后反向解析成url,,反向解析,听起来比较高级,
实际工作中很少去改动这个url的,不对,但是不排除,因为路径就是有人想要改,
两种方式,
1,怎么样在html文件里面反向解析url,
<p><a href="{% url 'json_test' %}">测试一下别名的页面</a></p>
2,怎么样在视图函数里面反向解析url,
from django.urls import reverse
redirect_url=reverse('json_test')
print(redirect_url)
return redirect(redirect_url)
本质上就是给url起别名,然后通过别名拿到具体的url路径,
关键点,
1,怎么起别名,
2,如何使用,分两种情况,在html文件,在视图函数中,
------------------------------------------------------------------
命名空间
在app多的时候会用到,后面项目中再说,
#######################################################################################
1,路由系统回顾,
这种通过url传值,然后删除数据的方式,应该是比较常用的,
-------------------------------------------
反向解析url
在html文件中反向解析,就是使用找别名,然后去找对应关系,这种可以更加的灵活,这样改动页面链接的时候,代码是不用动的,
在view函数中反向解析,
两种方式,
1,怎么样在html文件里面反向解析url,
<p><a href="{% url 'json_test' %}">测试一下别名的页面</a></p>
带参数的:
<p><a href="{% url 'book' 2018 'sd' %}">带参数的url</a></p>
2,怎么样在视图函数里面反向解析url,
from django.urls import reverse
redirect_url=reverse('json_test')
print(redirect_url)
return redirect(redirect_url)
本质上就是给url起别名,然后通过别名拿到具体的url路径,
带参数的:
# redirect_url=reverse('book',kwargs={'year':2018,'title':'aa'}) #这种传参数的方式要记住,而且如果不传参数是会报错的,
# print(redirect_url)
# #这种是解析带参数的,