1 简单配置

-第一个参数是正则表达式(如果要精准匹配:'^publish/$')
  -第二个参数是视图函数(不要加括号)
  -url(r'^admin/', admin.site.urls),

注:

当为网站根目录实现一个视图,你需要使用URL模式`` ‘^$’`` , 它代表一个空字符串

不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles

每个正则表达式前面的'r' 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义

2 无名分组

-按位置传参
  -分组之后,会把分组出来的数据,当位置参数,传到视图函数,所以,视图函数需要定义形参
  -url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),
  -def publish(request,*args):   视图函数可以这样接收

3 有名分组

-按关键字传参
  -有名分组之后,会把分组出来的数据,当关键字参数,传到视图函数,所以,视图函数需要定义形参,形参名字要跟分组的名字对应,与顺序无关
  -url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publish),
  -def publish(request, mounth,year):
  *****有名分组和无名分组,不要混用

4 反向解析

-先命一个名:
   -1 无参数:url(r'^publishadd133/$', views.publishadd,name='ddd'),
   -2 无名分组:url(r'^publishadd/([0-9]{4})/([0-9]{2})/$', views.publishadd,name='ddd'),
   -3 有名分组:url(r'^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publishadd,name='ddd'),
  -在模板层:
   -1 无参数:{% url 'ddd' %}
   -2 无名分组的:{% url 'ddd' foo.id %}
   -3 有名分组:{% url 'ddd' foo.year  foo.mounth %}  还可以 {% url 'ddd' year=foo.year mounth=foo.mounth %}
   
  -在视图层:
   from django.shortcuts import reverse
   在视图函数里:
   1 无参数:url=reverse('ddd')
   1 无名分组:url=reverse('ddd',args=(2018,12,))
   1 有名分组:url=reverse('ddd',args=(2018,12,)) 还可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})

5 路由分发

1 在不同的app里创建urls.py
  2 在总路由
   -from django.conf.urls import include
   -url(r'^blog/',include('blog.urls')),
   -url(r'^app01/',include('app01.urls')),
  3 在不同的app的urls里配置路由关系 
  ***重点***总路由,有子路由的 不能加结束符$

**** 项目下多个app项目****

注意点:.可以在每个app下的model见表或者单独一个app管理model
.每个app下的admin.py都可以注册任意一个app的表,在后台表还是归类到自己所在的一个app下.

6 名称空间

-url(r'^blog/',include('blog.urls',namespace='blog')),
  -子路由:url(r'^publish/$', views.publish,name='test'),
  -反向解析:
   -视图层:url = reverse('blog:test')
   -模板层:{% url 'app01:test'%}
  ***一般不要用***
   用这个:子路由:url(r'^publish/$', views.publish,name='app01_test'),

7 伪静态

-路由:url(r'^book/(?P<id>\d+.html)',views.book),
  -访问:http://127.0.0.1:8000/book/4.html

8 转化器

-django1.几版本的url和2.几的re_path用法一样.

 -django2.几的path

  path(准确路径,视图函数)         #与re_path(正则表达式,视图函数)第一个参数不同

  1.path(‘index/’,index)

  2.path(r'index/<int:year>/',index2)  #与url(r'index/(?P<year>[0-9]{4)/$',index3) 差不多,就第一个参数不同

 -默认path的转化器

  str非空字符串不包含/

  path非空字符串

  int 整数

  slug字母 数字 - _ 的字符串

  uuid 格式化的uuid 如:075194d3-6885-417e-a8a8-6c931e272f00

 -自定义path的转化器

#a.py定义转化器
class FourDigitYearConverter:
regex = '[0-9]{4}' #类属性 str类型
def to_python(self, value): #value是regex匹配到的str,返回值为视图函数接收值
return int(value)
def to_url(self, value): #通常返回str(value) 用于url反向引用
return '%04d' % value
#使用
from django.urls import register_converter, path
from app01 import views
import a
#注册
register_converter(a.FourDigitYearConverter, 'xxx')
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<xxx:year>/', views.year_archive),
...
]

  

随机推荐

  1. jQuery使用(三):DOM操作之val()方法操作表单元素value值

    操作表单元素属性value的值 <form action="./" method='GET'> <h3 >选择你喜欢的明星</h3> <s ...

  2. PHP7 学习笔记(十五)Repository 模式实现业务逻辑和数据访问的分离

    参考: 1.http://laravelacademy.org/post/3063.html

  3. MySQL的随笔

    数据库引擎 MySQL5.0支持的存储引擎包括MyISAM,InnoDB.MEMORY.MERGE.BDB等等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM M ...

  4. 神奇的Content-Type——在JSON中玩转XXE攻击

    大家都知道,许多WEB和移动应用都依赖于Client-Server的WEB通信交互服务.而在如SOAP.RESTful这样的WEB服务中,最常见的数据格式要数XML和JSON.当WEB服务使用XML或 ...

  5. 【游记】THUWC2018踹线记

    Day1. 早上九点多报道,然后就是试机.一开始有一些懵,没看清门外的通知,操作起来各种懵逼.不过提前适应过了在Linux下面编程,所以问题不大.调了gedit的界面,试了一下对拍,敲了一道试机题,然 ...

  6. jdbc 日期处理问题

    1.从结果集中取得日期部分 resultSet.getDate();  --2013-01-07 2.从结果集中取得时间部分 resultSet.getTime()   --22:08:09 3.从结 ...

  7. c# cbo控件

    c#  cbo控件 ,要获取选中的值 最好使用 ((强转的类型)selectitem).属性

  8. Kaldi的nnet3

    Nnet3配置中的上下文和块大小 简介 本页讨论了nnet3配置中关于解码和训练的块大小以及左右上下文的某些术语.这将有助于理解一些脚本.目前,从脚本角度来看,没有任何关于nnet3的"概述 ...

  9. 启动CDH的cloudera-scm-server报错Error: JAVA_HOME is not set and Java could not be found

    1 报错信息如下 +======================================================================+| Error: JAVA_HOME ...

  10. chrome性能分析

    Chrome开发者工具之JavaScript内存分析 前端性能优化 —— 前端性能分析 Chrome DevTools - 性能监控