博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-路由层
阅读量:5946 次
发布时间:2019-06-19

本文共 4118 字,大约阅读时间需要 13 分钟。

路由层(就时urls文件,那里配置一些列的路由和视图函数对应关系):
urlpatterns = [         url(r'^admin/',admin.site.urls),     ]
 
1、简单路由配置       这里的url其实就是一个函数,第一个参数就传入一个正则表达式,第二个参数传入对应的视图函数       url(r'^user_list/',views.user_list),
 
2、无名分组       url(r'^user_list/([0-9]{4})',views.user_list),       主要是第一个参数就行改动,前面说了第一个参数传一个正则表达式,我们可以把自己想要的数据进行分组,然后       作为参数传入后面的视图函数中,所以在视图函数中记得接收传送过去的参数。就以上面的路由为例,那我视图该怎么写呢?       def user_list(request,year):            print(year)            return HttpResponse('zhuyu')       这里视图函数中接收了那个参数,在路由层,一个路由分了几个组,视图函数记得接收相应的参数。还有就是这是位置传参,       所以接收的时候,也是按位置接收。       def user_list(request,*args):            pass       这样写也是可以的!
3、有名分组       url(r'^user_list/(?P
[0-9]{4})',views.user_list), 这里就是进行有名分组,将得到得到的数据赋值给一个变量,然后以year=2018的格式作为参数传到视图函数中,这里 同无名分组一样,视图函数那里记得接收传过来参数,但是参数名必须是year。 def user_list(request,year): print(year) return HttpResponse('zhuyu') 注意,这里的参数year一定要和urls那里的参数一样。
4、反向解析       url(r'user/',views.user),       url(r'^user_list/',views.user_list,name='zhuyu'),       url函数有四个参数,其中有一个name,就是给该条路由关系定义个名字       有什么用呢?            在你的视图函数或你的模板里肯定会用到一些url,那么r'^user_list/'发生了变化,是不是你的项目里用到该url            的地方是不是也要进行相应的改动,这样你的程序才会和之前一样。万一你的项目很大,很多地方用到该url,改起来            岂不是非常麻烦呢。       怎么用(分别在视图函数,模板中)            有了上面的疑问,那url函数中的name参数的作用就起到了作用            1、在视图函数中引用到反向解析            from django.shortcuts import reverse   #先导入该函数reverse            def user(request):                url = reverse('zhuyu')                print(url)  #打印下url看下是什么东西                return redirect(url)            def user_list(request):                return HttpResponse('hello')            这里这样写了之后,路由层里url怎么变动,都不会影响该视图函数的重定向            2、在模板中引用到反向解析            点击       假如是这种情况呢?       url(r'user/',views.user),       url(r'^user_list/([0-9]{4})',views.user_list,name='zhuyu'),       还是老样子分别在视图函数和模板演示            1、视图函数中            def user(request):                url = reverse('zhuyu',args=(2018,))                print(url)                return redirect(url)            def user_list(request,year):                return HttpResponse('hello')            注意:args必须是一个元组形式            2、模板中            {
% url 'zhuyu' 2018 %} 注意:url其实也是一个函数,传参的方法就是参数之间空格就行 那这种情况呢? url(r'user/',views.user), url(r'^user_list/(?
[0-9]{4})',views.user_list,name='zhuyu'), 1、视图函数中 def user(request): url = reverse('zhuyu',kwargs=(year=2018,)) print(url) return redirect(url) def user_list(request,year): return HttpResponse('hello') 2、模板中 {
% url 'zhuyu' year=2018 %}
5、路由分发       ROOT_URLCONF = 'book.urls'       假如都把路由与视图函数的关系全都写在一个文件里的话,这样你的文件就会特别乱。       我们不是有app的概念嘛,一个请求的url进来,先去总路由去匹配,成功匹配的话,       就继续将该路由分发那属于它app的urls路由关系映射中。       大致简记下:            你有两个app,一个app01,一个是app02,在这两个app一样也有一个路由和视图函数的关系            首先请求的url进去总路由中匹配,如果是app01开头,就把该请求的url继续分发到app01中            的路由关系中,进行匹配。       写写代码吧,首先你要有两个app,里面创建一个文件,写路由关系,文件名一般为urls       在你的总路由文件里,先要导入       from django.conf.urls import url,include       urlpatterns = [            url(r'^app01/',include('app01.urls'))            url(r'^app02/',include('app02.urls'))        ]        app02中urls配置        from django.conf.urls import url        from app02 import views        urlpatterns = [            url(r'^user/$',view.user)            url(r'^user_list/$',view.user_list)        ]        在浏览器输入:128.0.0.1:8000/app02/user     就会匹配到相应的视图
6、名称空间        名称空间一般和路由分发一起使用,之前不是有反向解析嘛,name='zhuyu',万一几个url都为name='zhuyu',        那么我是用zhuyu到底是用时的是哪个就分不清楚了,所以名称空间就十分有必要的        在include函数中,有个namespace参数,这就是给分发的路由设置个名字。        我们给app02设置 namespace=app02        1、视图函数中            def user(request):                url = reverse('app02:zhuyu',kwargs=(year=2018,))                print(url)                return redirect(url)        2、模板中            {
% url 'app02:zhuyu' year=2018 %}
7、伪静态        伪静态从名字来看:它是一个伪装的静态网页,那么就是一个多态网页了。        你可以url写成html,那么百度会默认以为是静态网页,收入到数据库中,这样是你的网页可能比其他网页先匹配到。

 

转载于:https://www.cnblogs.com/zhuchunyu/p/9923272.html

你可能感兴趣的文章
安装django
查看>>
Bootstrap3 栅格系统-简介
查看>>
ADODB类库操作查询数据表
查看>>
【java】File的使用:将字符串写出到本地文件,大小0kb的原因
查看>>
安卓音乐播放器开发实例
查看>>
some requirement checks failed
查看>>
存储管理
查看>>
HDU-2089-不要62
查看>>
Latex学习笔记0
查看>>
css控制div强制换行
查看>>
ios 底部用定位 fixed。在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去。解决方法...
查看>>
HDU1257题解
查看>>
Iterator
查看>>
Spring MVC整合Velocity
查看>>
fiddler+android抓包工具配置使用
查看>>
Spring Data JPA 复杂/多条件组合分页查询
查看>>
css文本 颜色1
查看>>
博客搬家了
查看>>
JavaScript中的作用域,闭包和上下文
查看>>
Python中使用ElementTree解析xml
查看>>