菜单

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

2019年9月3日 - 理财婆高手论坛

在Django的UTucsonLconf中展开函数导入的章程,djangourlconf

看下这几个 U君越Lconf:

from django.conf.urls.defaults import *
from mysite.views import hello, current_datetime, hours_ahead

urlpatterns = patterns('',
  (r'^hello/$', hello),
  (r'^time/$', current_datetime),
  (r'^time/plus/(\d{1,2})/$', hours_ahead),
)

在 U途乐Lconf
中的每一个入口包含了它所涉嫌的视图函数,间接传入了一个函数对象。
这就意味着供给在模块初步处导入视图函数。

但随着 Django 应用变得复杂,它的 USportageLconf
也在加强,何况爱慕这么些导入也许使得管理变麻烦。
(对每一种新的view函数,你不得不记住要导入它,何况动用这种格局会使导入语句将变得一定长。)能够经过导入
views 模块本人来幸免这几个麻烦。 上面例子的U本田UR-VLconf与前贰个也正是:

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 还提供了另一种方法能够在 U奥迪Q3Lconf 中为某些极度的情势钦定视图函数:
你能够流传二个含有模块名和函数名的字符串,并不是函数对象自己。 继续示例:

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
会在首先次索要它时依据字符串所描述的视图函数的名字和路线,导入合适的视图函数。

当使用字符串能力时,你能够利用更简化的秘籍:提收取三个集体视图前缀。
在大家的UEnclaveLconf例子中,每一种视图字符串的发轫部分都以“\,形成重复输入。
大家得以把集体的前缀提抽取来,作为第一个参数字传送给\ “函数:

System Message: WARNING/2 (<string>, line 99); backlink

Inline 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 模块的话,它能够使得 UTucsonLconf
更易读和管制。

函数对象方法的裨益如下:

    更易于对视图函数举行包装(wrap)。
参见本章前边的《包装视图函数》一节。

    更 Pythonic,便是说,更契合 Python 的历史观,如把函数当成对象传递。

七个措施都以立见功用的,乃至你能够在同二个 UENCORELconf 中混用它们。
决定权在你。

看下这几个 UEvoqueLconf: from django.conf.urls.defaults import *理财婆高手论坛,from
mysite.views import hello, current_datetime, hou…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图