香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

在Django的URLconf中进行函数导入的方法


时间:2021-12-08 14:54 作者:admin


看下这个 URLconf:

from django.conf.urls.defaults import *from mysite.views import hello, current_datetime, hours_aheadurlpatterns = patterns('',  (r'^hello/$', hello),  (r'^time/$', current_datetime),  (r'^time/plus/(\d{1,2})/$', hours_ahead),)

在 URLconf 中的每一个入口包括了它所关联的视图函数,直接传入了一个函数对象。 这就意味着需要在模块开始处导入视图函数。

但随着 Django 应用变得复杂,它的 URLconf 也在增长,并且维护这些导入可能使得管理变麻烦。 (对每个新的view函数,你不得不记住要导入它,并且采用这种方法会使导入语句将变得相当长。)可以通过导入 views 模块本身来避免这个麻烦。 下面例子的URLconf与前一个等价:

from django.conf.urls.defaults import ***from mysite import views**urlpatterns = patterns('',  (r'^hello/$', **views.hello** ),  (r'^time/$', **views.current_datetime** ),  (r'^time/plus/(d{1,2})/$', **views.hours_ahead** ),)

Django 还提供了另一种方法可以在 URLconf 中为某个特别的模式指定视图函数: 你可以传入一个包含模块名和函数名的字符串,而不是函数对象本身。 继续示例:

from django.conf.urls.defaults import *urlpatterns = patterns('',  (r'^hello/$', **'mysite.views.hello'** ),  (r'^time/$', **'mysite.views.current_datetime'** ),  (r'^time/plus/(d{1,2})/$', **'mysite.views.hours_ahead'** ),)

(注意视图名前后的引号。 应该使用带引号的 'mysite.views.current_datetime' 而不是 mysite.views.current_datetime 。)

使用这个技术,就不必导入视图函数了;Django 会在第一次需要它时根据字符串所描述的视图函数的名字和路径,导入合适的视图函数。

当使用字符串技术时,你可以采用更简化的方式:提取出一个公共视图前缀。 在我们的URLconf例子中,每个视图字符串的开始部分都是``\,造成重复输入。 我们可以把公共的前缀提取出来,作为第一个参数传给\ ``函数:

System Message: WARNING/2 (<string>, line 99); backlinkInline literal start-string without end-string.from django.conf.urls.defaults import *urlpatterns = patterns(**'mysite.views'** ,  (r'^hello/$', **'hello'** ),  (r'^time/$', **'current_datetime'** ),  (r'^time/plus/(d{1,2})/$', **'hours_ahead'** ),)

注意既不要在前缀后面跟着一个点号("." ),也不要在视图字符串前面放一个点号。 Django 会自动处理它们。

牢记这两种方法,哪种更好一些呢? 这取决于你的个人编码习惯和需要。

字符串方法的好处如下:

更紧凑,因为不需要你导入视图函数。

如果你的视图函数存在于几个不同的 python/' target='_blank'>python 模块的话,它可以使得 URLconf 更易读和管理。

函数对象方法的好处如下:

更容易对视图函数进行包装(wrap)。 参见本章后面的《包装视图函数》一节。

Pythonic,就是说,更符合 Python 的传统,如把函数当成对象传递。

两个方法都是有效的,甚至你可以在同一个 URLconf 中混用它们。 决定权在你。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)