简介:许多朋友询问了Django如何配置URL。本文的首席CTO笔记开始为您的参考做出详细的答案。我希望这对每个人都会有所帮助!让我们一起看看!
流链接功能导入
1:直接导入视图功能
来自django.conf.urls.defaults导入 *
从mysite.views导入hello
urlpatterns =模式('',,
(r'^hello/$',你好),
(r'^time/$',时间),
治愈
2:在介绍软件包模块的名称和函数的功能中,而不是函数本身
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^Hello/$','views.hello'),
(r'^time/$','views.time'),
治愈
3:无需导入任何视图内容,写出字符串的清晰描述
来自django.conf.urls.defaults导入 *
urlpatterns =模式('',,
(r'^Hello/$','mysite.views.hello'),
(r'^time/$','mysite.views.time'),
治愈
4:提取公共视图前缀
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.views',
(r'^Hello/$','Hello'),
(r'^time/$','time'),
治愈
5:partterns()返回对象的添加到对象
老的:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.view',,
(r'^Hello/$','Hello'),
(r'^time/$','time'),
(r'^other/$','mysite.othother.oth'),
治愈
新的:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('mysite.view',,
(r'^Hello/$','Hello'),
(r'^time/$','time'),
治愈
urlpatterns +=模式('mysite.OthoShts',,
(r'^other/$','其他'),
治愈
6:到目前为止,在所有URLCONF示例中,我们都非常简单,即
如果您要捕获的URL零件并添加小括号,Django将将捕获的文本传递到视图函数。
在高级用法中,您还可以使用“命名”正则表达组捕获URL并将其作为“关键字”参数传递给视图。
在Python正则表达式中,正则表达组的语法(?pnamepatrn)是该组的名称,而模式是一种匹配模式。
以下是使用未知组的URLCONF的示例:
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^arcticles/(d {4})/$',views.year_archive),
(r'^arcticles/(d {4})/(d {2})/$',view.moth_archive),
治愈
以下是相同的URLCONF,它重写了命名组:
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^arcticles/(?pyeard {4})/$',veiws.year_archive),
;
治愈
如果您不带命名组,请求/Arcticle/2006/03 //将等于此功能呼叫:
month_archive(请求,'2006','03')
对于命名组,相同的请求就是这样的函数调用:
month_archive(请求,年='2006',月= '03')
可以看出,使用命名组可以使您的urlconf更清晰,减少参数顺序可能与潜在的错误混合在一起,
您还可以对定义中的参数进行排序。
7:查看冗余:
#urls.py
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^(foo)/$',views.foobar_view),
(r'^(bar)/$',views.foobar_view),
治愈
#views.py
来自django.shortcuts导入render_to_response
从mysite.models导入mymodel
def foobar_view(请求,URL):
m_list = mymodel.objects.filter(is_new = true)
如果url =='foo':
template_name ='Template1.html'
elif url =='bar':
template_name ='Template2.html'
return render_to_response(template_name,{'m_list':m_list})
使用上述方法可以减少视图冗余
8:固定参数传递到URL:
#urls.py
来自django.conf.urls.defaults导入 *
从缅甸进口视图
urlpatterns =模式('',,
(r'^foo/$',views.foobar_view,{'template_name':'template1.html'}),
(r'^bar/$',views.foobar_view,{'template_name':'template2.html'}),
治愈
#views.py
来自django.shortcuts导入render_to_response
从mysite.models导入mymodel
def foobar_view(请求,template_name):
m_list = mymodel.objects.filter(is_new = true)
return render_to_response(template_name,{'m_list':m_list})
一些URL参数的详细说明:
/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
以上是我们可以以不同方式实施的三个URL
1 :( r'^mydata/(/w {3})/(/d/d)',views.mydata)mydata(请求,'jan','01')
2:(r'^mydata/(?pmonth/w {3})/(?pday/d/d)',view.mydata)mydata(请求,月='jan',day',day ='01')
3 :( r'^mydata/birthday/$',views.mydata,{月:'jan',day:'01'})mydata(请求,月='jan',day = '01')
9:包括导入:
来自django.conf.urls.defaults导入 *
urlpatterns =模式('',,
(r'^weblog/',包括('mysite.blog.urls'),
(r'^photos/',包括('mysite.photos.urls'),
(r'^of/$','mysite.views.about'),
治愈
10:示例:
验证用户是否已登录:
以下是三个观点
def my_view1(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template1.html')
def my_view2(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template2.html')
def my_view3(请求):
如果未request.user.is_authenticated():
返回httpresponseredirect('/accounts/login/')
#...
返回render_to_response('template3.html')
以下是视图上的包装:
deficuires_login(查看):
def new_view(请求, *args,** kwargs):
如果未request.user.is_authenticatienatienationed():#如果用户未登录,请跳到登录接口
返回httpresponseredirect('/accounts/login/')
返回视图(请求, *args,** kwargs)#otherwise
返回new_view #turn to new_view值:登录视图或查看视图
以下是URL配置:
来自django.conf.urls.defaults导入 *
来自mySite.views import oneques_login,my_view1,my_view2,my_view3
urlpatterns =模式('',,
(r'^view1/$',quirenes_login(my_view1)),
(r'^view2/$',quirenes_login(my_view2)),
(r'^view3/$',quirenes_login(my_view3)),
治愈
1.什么是urls.py
2. urls.py文件位置
3. urls.py配置格式
urlpatterns =模式('view prefix',
URL(r'^正则表达式1/$','view函数1',name =“ url标识符1”),
URL(r'^正则表达式2/$','view函数2',name =“ url标识2”),,
治愈
4.如何在urls.py中工作
不需要
来自django.conf.urls导入模式,包括URL
#未点击接下来的两行以启用管理员:
#来自django.contrib导入管理员
#admin.autodiscover()
urlpatterns =模式('',,
# 例子:
#url(r'^$','nowamagic.views.home',name ='home'),
#url(r'^nowamagic/',include('nowamagic.foo.urls'),),),),
#不注册管理员/文档/文档belw启用管理文档:
#url(r'^admin/doc/',include('django.contrib.admindocs.urls'),),),),),),),),),),),),),),)
#取消注释下一行以启用管理员:
#url(r'^admin/',infulude(admin.site.urls)),
治愈
只要您配置这样的规则,我也曾谈论过它:
[python]查看普通复制打印?
(r'^hello/$',你好),
您可以在Views.py中定义Hello函数。
该图案包含一个尖锐的昵称(^)和一个美元符号($)。这些是正则表达式符号,具有特定的含义:上箭头需要表达式以符合字符串的头部,并且美元符号需要表达式要匹配字符串的尾巴。^Hello/ $匹配Hello/ String,也就是说,在帮助Hello/ hello/ hello/)函数之后,如果没有'$',请输入hello1/;Hello2/ Will对应于Hello()该函数已显示。
Hello功能我们可以随便写:
[python]查看普通复制打印?
来自django.http导入httpresponse,http404
def hello(请求):#each视图函数至少具有一个参数,通常称为请求。
返回httpresponse(“ Hello Nowamagic!”)#a视图功能必须返回httpresponse
然后,我需要显示主页,也就是说,域名直接映射到某个视图功能,那么我该如何编写?
[python]查看普通复制打印?
(r'^$',索引),
索引函数是生成主页的视图函数。
顺便说一句,在视图函数中,返回httpresponseredirect('https://www.shouxicto.com/'):返回到主页,即127.0.0.1。
结论:以上是首席CTO引入的Django的所有内容,请注意Django如何配置URL。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住收集并关注此网站。