博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django高级视图和URL配置
阅读量:5963 次
发布时间:2019-06-19

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

#URL配置 # -*-coding:utf-8-*-from django.conf.urls.defaults import patterns, include, url# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()"""    整个框架关注的是:是否存在一个名为urlpatterns模块级别的变量    故而只要增加多个patterns对象即可,从而实现使用多个视图前缀,对视图模块进行分类管理维护"""urlpatterns = patterns('mysite.views',                       # 我们把hello视图函数当作对象处理,而不是调用它,这是python的一个重要特性,函数是一级对象(first-class objects)                       url(r'^hello/$', 'hello'),                       url(r'^currentdate/$', 'current_datetime'),                       url(r'time/\d{1,2}/$', 'current_datetime'),                       # 正则表达式利用括号从文本中提取数据,传入到视图函数                       url(r'time/(\d{1,3})/$', 'time'),                       url(r'^render/$', 'render_template'),                       url(r'^accessDb/$', 'accessDb')                       )urlpatterns += patterns('',                        url(r'^admin/', include(admin.site.urls)))urlpatterns += patterns('mysite.books.views',                        url(r'^meta1/', 'request_meta'),                        url(r'^meta2/', 'request_meta_2'),                        # url(r'^search_form/', search_form),                        url(r'^search/', 'search')                        )urlpatterns += patterns('mysite.contact.views',                        url(r'^contact/', 'contact2')                        )

 命名组URL配置实例(通过该方式可以以“关键字”方式传参到视图函数):

 python函数传参方式:位置参数&关键字参数

def year_archive(request, year, month, day):    """    命名组语法:(?P
p) url(r'^year_archive/(?P
\d{4})/(?P
\d{1,2})/(?P
\d{1,2})/$', 'year_archive') """ return HttpResponse('Now is %s-%s-%s' % (year, month, day))

URL短路逻辑:

#如果请求同时匹配多种模式,优先使用最顶层匹配到的视图函数 urlpatterns = patterns('',# ...('^auth/user/add/$', views.user_add_stage),('^([^/]+)/([^/]+)/add/$', views.add_stage),# ...)

 视图包装:

urlpatterns += patterns('',                        url(r'^view1/', requires_login(my_view1)),                        url(r'^view2/', requires_login(my_view2))                        )
def my_view1(request):    return render_to_response('template1.html')def my_view2(request):    return render_to_response('template2.html')def requires_login(view):    def new_view(request, *args, **kwargs):        if not request.user.is_authenticated():            return HttpResponseRedirect('/accounts/login/')        return view(request, *args, **kwargs)    return new_view

 URL之include示例:

 

备注:捕获的参数(命名组传参)& 额外的URLconf如何与include()协同工作?

这些参数将传递给被包含的URLconf的每一行,

转载于:https://www.cnblogs.com/506740640zl/p/5933354.html

你可能感兴趣的文章
Windows Shellcode学习笔记——shellcode在栈溢出中的利用与优化
查看>>
关于多线程中使用SendMessage
查看>>
【云栖大会】阿里云移动云Apsara Mobile重磅发布 推出Cloud Native App全新研发范式...
查看>>
【PMP】Head First PMP 学习笔记 第九章 人力资源管理
查看>>
2015年末必备前端工具集
查看>>
【Solidity】8. 杂项 - 深入理解Solidity
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
Go语言大神亲述:历七劫方可成为程序员!
查看>>
CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
查看>>
NetApp针对其集群化方案“不值得升级”言论回击Wikibon
查看>>
QQ把游戏放进聊天框,这一点Facebook和微信都没做到
查看>>
在线匿名之父意欲终结“加密战争”
查看>>
WLAN市场销量逐步逼近有线网络
查看>>
SDN市场或许进入了慢热期
查看>>
教你使用Linux系统的Shell脚本维护Oracle
查看>>
力龙信息布局大数据领域
查看>>
大数据巧治职业差评师 生存空间锐减九成
查看>>
天津开展免费无线局域网建设
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
英国政府可能利用曼彻斯特自杀袭击要求互联网公司破解加密
查看>>