##################   路由系统介绍    #######################

路由系统就是路径和函数的对应关系,
路由系统可以看成支撑你这个网站的目录,就像是一本书一样,
这个url对应关系,就是路由系统,
1,在django2.0中不再是url,而是path,其他的都一样,
2,url里面有四个部分,url(正则表达式,函数,参数,别名)
from django.conf.urls import url
urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
前两个用的最多,第三个参数基本不用,别名在反向解析的时候有用,
3,正则表达式,这一个就可以玩出很多的花样来,需要再研究一下正则表达式,这个很有用,
分组匹配,相当于给视图传递位置参数,需要在视图函数中接收,在编辑和删除的的url中就会用到,
可以分组命名匹配,相当于给视图传递关键字参数,
两个不能混着用,会覆盖的,

##################   路由系统--include其他的URLconfs     #######################

现在写的路由文件,都是在一个文件写的,是在项目的url.py文件写的,
如果app,多了之后,就要做分组了,
url(r'^app01/', include(urls))
#先从一级路由开始找,然后到二级路由,
#这种在项目中app比较多的时候会用到,

##################   路由系统---命名URL和URL反向解析     #######################

为什么需要反向解析?

背景:
url现在很多都是写死的,但是如果动了之后很容易影响一大片,怎么办?
解决方案:
可以对url起一个别名,然后反向解析成url
反向解析,就是使用找别名,然后去找对应关系,这种可以更加的灵活,这样改动页面链接的时候,代码是不用动的,
实际工作中很少去改动这个url的,但是不排除,因为路径就是有人想要改,

命名:

url(r'^home', views.home, name='home'),  # 给我的url匹配模式起名为 home
url(r'^index/(\d*)', views.index, name='index'), # 给我的url匹配模式起名为index

在html中引用:

在模板里面可以这样引用:
<p><a href="{% url 'json_test' %}">测试一下别名的页面</a></p>
<p><a href="{% url 'book' 2018 'sd' %}">带参数的url</a></p>

在视图中引用;

在views函数中可以这样引用:
from django.urls import reverse
def home(request):
# redirect_url=reverse('json_test') # json_test就是url的别名,
# print(redirect_url)
# return redirect(redirect_url) # 重定向这个url,
# json_test 这个是不带参数的,可以直接写, # redirect_url=reverse('book',kwargs={'year':2018,'title':'aa'})
# print(redirect_url)
# #这种是解析带参数的,

##################   路由系统     #######################

路由匹配规则:
1,r 是正则表达式中防止转义的符号,例如在python/n代表换行,加上r就不换行了。
2,$ 正则表达式中表示以什么什么结束,在这里就是以2003/结束,以其他字符结束则不匹配
3,^ 正则表达式中表示以什么什么开始,在这里表示以articles 开头,以其他开头则匹配不上。
4,(?p)代表分组,<month>相当于字典中的键值,[0-9]{2}相当于字典中的value。
5,这个路由是静态路由,就是固定得,路由只能这么写,才能找到对应得视图函数
6,这个是动态路由,就是活得,只要符合这个正则表达式,就可以找到这个视图函数,是活滴 关于正则匹配优先级
在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条。

##################   路由系统     #######################

# include其他的URLconfs,路由转发

from django.conf.urls import include, url
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')), # 可以包含其他的URLconfs文件
] ##############################
from django.contrib import admin
from django.urls import path,include
from news import urls urlpatterns = [
path('admin/', admin.site.urls),
path('', include(urls),name='news'), ]

##################   路由系统     #######################

##################   路由系统     #######################

##################   路由系统     #######################

django框架基础-路由系统-长期维护的更多相关文章

  1. django框架基础-视图系统-长期维护

    ##################   什么是视图?     ####################### 视图: 1,一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受W ...

  2. django框架基础-ORM进阶-长期维护

    ###############    ORM进阶---contenttype    ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...

  3. Django框架简介-路由系统

    2.2 路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 你就是 ...

  4. django框架进阶-使用缓存-长期维护

    ###############   django-缓存页面    ############### ########################################### # 全站缓存, ...

  5. django框架进阶-ModelForm组件-长期维护

    ############################################################ """ 通常在Django项目中,我们编写的大部 ...

  6. django框架进阶-form组件-长期维护

    ##################     form组件做了什么事情?      ####################### 之前web开发的模式,以注册为例 1,要有一个注册页面,然后有一个f ...

  7. Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据

    路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...

  8. django 中的路由系统(url)

    路由系统 根据Django约定,一个WSGI应用里最核心的部件有两个:路由表和视图.Django框架 的核心功能就是路由:根据HTTP请求中的URL,查找路由表,将HTTP请求分发到 不同的视图去处理 ...

  9. 02 Django框架基础(APP的创建访问)

    一.创建项目 1.命令:django-admin startproject sitename 2.IDLE环境:本质上都是执行上述命令 常用命令: python manage.py runserver ...

随机推荐

  1. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  2. 无法安装R程序包

    如题,使用insatll.packages("cluster")安装包时,会出现如下错误提示. Warning: unable to access index for reposi ...

  3. 【mac相关bash文件】

    mac 下 关于 .bashrc 和 .bash_profile 1.首先.bashrc 可能自带的系统里没有这个文件. 2.bash_profile  里边一半放的是PATH相关. 3. .bash ...

  4. frp内网穿透,centos7+frp成功样例

    准备工作: 阿里云服务器一台,备案域名一个,本地服务器一台(本人用的虚拟机centos7) frp文件:frp_0.22.0_linux_amd64.tar.gz 链接:https://pan.bai ...

  5. Linux下常用的3种软件安装方式—rpm、yum、tar

    一:Linux源码安装    1.解压源码包文件    源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式:   ...

  6. 系统学习python第三天学习笔记

    day02补充 运算符补充 in value = "我是中国人" # 判断'中国'是否在value所代指的字符串中. "中国"是否是value所代指的字符串的子 ...

  7. cppcheck下载及使用

    一.参考文档 1.Ubuntu下安装Cppcheck源码操作步骤 2.cppcheck std.cfg not found error when std.cfg file is available 3 ...

  8. 安装使用离线版本的维基百科(Wikipedia)

    1 相关背景 平常大家在上网查询一些基本概念的时候常常会参考维基百科上面的资料,但是由于方校长研制的GFW(长城防火墙系统)强大的屏蔽功能,好多链接打开以后,不出意外会出现著名的“404NOT FOU ...

  9. ZJNU 1538 - YN!ngC的取子游戏--高级

    Nim博弈 因为移动到第0阶会消失 所以可以得到从最后一个人操作必定是把第1阶所有子全部移动到第0阶 递推可得,最后一个能把奇数阶的子移动到偶数阶上的人将会必胜 所以这个必胜条件就是奇数阶上的子全部为 ...

  10. CF633H Fibonacci-ish II(莫队+线段树)

    温馨提示:本题十分卡常数,我手动开O2才过的.而数据范围不伦不类的n<=30000,常数小的O(n2)居然比O(n√nlogn)跑得快…… 考虑插进去一个元素对答案产生的影响.原本数列为Σa[i ...