简介:今天,首席CTO Note将与您分享Djangoviews如何称呼URL。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
提示您在urls.py中的导入视图中错了
您可以查看此目录中是否有__init__.py文件。
实际上,使用django-admin createApp appName时,已经编写了自动创建文件目录。
设置:
导入OS.Path
template_dirs =((
os.path.join(OS.Path.dirname(__File__),'模板')。代替 ('\', '/'),
治愈
urls.py:
来自django.conf.urls.defaults导入 *
来自django.views.gneric.simple导入direct_to_template
从cy.views导入索引
urlpatterns =模式('',,
(r'^$',索引),(您如何到达这里?)
治愈
Views.py:
来自django.http导入http404,httpresponse
来自django.template.loader import_template
来自django.template导入上下文
导入日期
DEF索引(请求):
现在= dateTime.dateTime.now()
返回render_to_response('index.html',locals())
以下是我的目录结构
CY:
manage.py
CY:
__init__.py
settings.py
urls.py
Views.py
wsgi.py
模板:
base.html
index.html
大约.html
contact.html
定义页面模板你好
定义URL
定义视图,最后渲染(请求,'Hello',locals())
访问上面定义的URL/OL
流链接功能导入
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)),
治愈
结论:以上是有关Djangoviews如何调用URL的相关内容答案的摘要。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?