sd 发表于 2016-3-18 09:41

django之url映射配置

django url映射配置
通过对urls.py进行修改,来完成url与视图处理函数的配置

1、普通:
直接在urlpatterns里面添加一条类似url(r'^blog/time/′,′blog.views.time′)的列表项urlpatterns=patterns(′′,url(r′blog/index/′,′blog.views.time′)的列表项urlpatterns=patterns(″,url(r′blog/index/','blog.views.index'),
    url(r'^blog/time/′,′blog.views.time′),)2、多个视图处理函数存在于同一个模块文件中可以在patterns的第一个参数中直接写入模块,在明细的列表项中就不需要加入模块前缀,只需指定处理函数即可。如:urlpatterns=patterns(′blog.views′,url(r′blog/index/′,′blog.views.time′),)2、多个视图处理函数存在于同一个模块文件中可以在patterns的第一个参数中直接写入模块,在明细的列表项中就不需要加入模块前缀,只需指定处理函数即可。如:urlpatterns=patterns(′blog.views′,url(r′blog/index/','index'),
    url(r'^blog/time/′,′time′),)3、设置成分离的urls配置:这样可以离urls的配置更加简洁如:urlpatterns=patterns(′blog.views′,url(r′blog/index/′,′time′),)3、设置成分离的urls配置:这样可以离urls的配置更加简洁如:urlpatterns=patterns(′blog.views′,url(r′blog/index/','index'),
    url(r'^blog/time/′,′time′),)urlpatterns+=patterns(′blog.help′,url(r′blog/help/′,′time′),)urlpatterns+=patterns(′blog.help′,url(r′blog/help/','help'),
    )

4、把urls配置放到不同的文件夹中:
单独文件的方式更适合于一个project下同时存在多个站点,每个站点单独配置处理的urls配置
如:在blog工程下面有一个urls.py文件,
内容如下:
from django.conf.urls import patterns,include,url
urlpatterns = patterns('views',
    url(r'^index/′,′index′),url(r′time/′,′index′),url(r′time/','time'),
    )

此时projects下的urls的配置应该做如下修改:
如:
urlpatterns = patterns('',
    url(r'^blog/',include('blog.urls')),
    )
这样一访问blog的内容,就会去访问blog.urls的内容;

5、通过url传递函数
通过正则表达式传值
1)传统方式
如www.blog.com?id=123&name=abc
这种方式url配置不会修改
需要修改视图函数,来获取传递参数:
id = request.GET.get('id')
name = request.GET.get('name')

2)通过'/'方式传值
如:www.blog.com/123/abc
需要对urls配置进行修改,修改成如下
如:
urlpatterns = patterns('blog.views',
    url(r'^blog/index/′,′index′),url(r′blog/time/(\d(4))/′,′index′),url(r′blog/time/(\d(4))/','time'),
    )
这里的(\d(4))就表示接收4个数字
还需要对视图函数进行修改,这时视图函数还需要多加一个参数
def time(request,p1):
    #p1为通过url传过来的参数,可以直接使用

可以通过正则表达式规定传入参数的名字,如:
urlpatterns = patterns('blog.views',
    url(r'^blog/index/′,′index′),url(r′blog/time/(?P\d(4))/′,′index′),url(r′blog/time/(?P\d(4))/','time'),
    )
此时视图函数,传入的参数名称必须和正则表达式的参数名称相同,即:
def time(request,id):
    #参数名称必须为id
转自:http://blog.sina.com.cn/s/blog_8f4dd3880102wfaz.html
页: [1]
查看完整版本: django之url映射配置