使django中的复杂url更容易的库。
django-urls-sugar的Python项目详细描述
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————允许定义更复杂的结构化URL。
使用重新定义的模式(它只是扩展了默认模式,也允许您定义常用的url)稍微修改urls.py文件。例如:
from django.conf.urls.defaults import url
from urls sugar.utils import patterns,url sugar
from urls sugar.classes import constant,variable
urlpatterns=patterns('',
url('^home$',home视图,name='home'),
url sugar([constant('page'),
变量('pk','\d+'),
],页面视图,name='page'),
…
>这两个URL将处理::
/home/
/page/(?p<;pk>;\d+/
url_sugar的第一个参数是url_sugar元素的列表,可以是以下任何一个:
constant
--
正如名称所示,常量是url的一个常量部分。它接受一个参数,可以是一个字符串或一个字符串列表(在这种情况下,将生成多个url)。例如,
*``常量('home')``将生成简单的url`^home/$`;
*``常量(['home','homepage'])``将生成两个指向同一视图的url`^home/$``和``^homepage$`'。
这允许您以简单的方式定义多个(常量)url,避免重定向或允许转换URL。
variable
--
变量更复杂。一般来说,它允许在url中定义一个变量,该变量将被传递给视图,就像通常的url一样。它接受两个参数,变量名和要匹配的正则表达式。一个简单的例子是:
*``变量('language','[a-z]{2}')``这将很容易猜测,生成url``^(?)p<;language>;[a-z]{2}')$`.
变量允许更复杂的交互。假设您希望变量是用连字符分隔的列表。variable允许您使用一个简单的
*`` variable('languages','[a-z]{2},separator='-')`.
可选采用(多个)url_sugar元素作为参数。例如:
*``可选(常量('home'),常量('index'))``将生成`^/$``和`^home/index/$```,而
*``可选(常量('home'),可选(常量('index')``将生成``^/$`,`^home/$`,``^ index/$``和`^home/index/$``.
特殊情况
==
前缀和后缀
----
常量和变量允许指定前缀和后缀,默认情况下分别为``'``和`'/```。这样,``constant('home')``生成`^home/$``。使用自定义前缀和后缀可能很有用,例如在处理特殊资源类型时:
url-sugar([constant('resource'),
variable('slug','[a-z0-9-]+',suffix='',
variable('type','[a-z]+',prefix='.'),
],resource-view,name=”resource')
这将处理诸如`/resource/my awesome resource.json`
变量消歧
<--
当有太多可选变量时,django可能无法理解哪个变量应该得到给定的值。例如:
url-sugar([constant('pages'),
optional(variable('language','[a-z]{2}'),
optional(variable('filter',[a-z]+'),
,page-view,name='page')
在这种情况下,不可能区分`/pages/it/``和``pages/blogposts/``。变量允许消除歧义,设置“unamuous”标志:
url-sugar([常量('pages'),
可选(变量('language','[a-z]{2},unamuous=true)),
可选(变量('filter',[a-z]+',unamuous=true),
,页面视图,name='page')
url,如`/pages/language:it/```,``/pages/filter:blogposts/``或`/pages/language:it/filter:blogposts/``.
…_ django-templatetags-sugar:http://github.com/alex/django-templatetag-sugar
使用重新定义的模式(它只是扩展了默认模式,也允许您定义常用的url)稍微修改urls.py文件。例如:
from django.conf.urls.defaults import url
from urls sugar.utils import patterns,url sugar
from urls sugar.classes import constant,variable
urlpatterns=patterns('',
url('^home$',home视图,name='home'),
url sugar([constant('page'),
变量('pk','\d+'),
],页面视图,name='page'),
…
>这两个URL将处理::
/home/
/page/(?p<;pk>;\d+/
url_sugar的第一个参数是url_sugar元素的列表,可以是以下任何一个:
constant
--
正如名称所示,常量是url的一个常量部分。它接受一个参数,可以是一个字符串或一个字符串列表(在这种情况下,将生成多个url)。例如,
*``常量('home')``将生成简单的url`^home/$`;
*``常量(['home','homepage'])``将生成两个指向同一视图的url`^home/$``和``^homepage$`'。
这允许您以简单的方式定义多个(常量)url,避免重定向或允许转换URL。
variable
--
变量更复杂。一般来说,它允许在url中定义一个变量,该变量将被传递给视图,就像通常的url一样。它接受两个参数,变量名和要匹配的正则表达式。一个简单的例子是:
*``变量('language','[a-z]{2}')``这将很容易猜测,生成url``^(?)p<;language>;[a-z]{2}')$`.
变量允许更复杂的交互。假设您希望变量是用连字符分隔的列表。variable允许您使用一个简单的
*`` variable('languages','[a-z]{2},separator='-')`.
可选采用(多个)url_sugar元素作为参数。例如:
*``可选(常量('home'),常量('index'))``将生成`^/$``和`^home/index/$```,而
*``可选(常量('home'),可选(常量('index')``将生成``^/$`,`^home/$`,``^ index/$``和`^home/index/$``.
特殊情况
==
前缀和后缀
----
常量和变量允许指定前缀和后缀,默认情况下分别为``'``和`'/```。这样,``constant('home')``生成`^home/$``。使用自定义前缀和后缀可能很有用,例如在处理特殊资源类型时:
url-sugar([constant('resource'),
variable('slug','[a-z0-9-]+',suffix='',
variable('type','[a-z]+',prefix='.'),
],resource-view,name=”resource')
这将处理诸如`/resource/my awesome resource.json`
变量消歧
<--
当有太多可选变量时,django可能无法理解哪个变量应该得到给定的值。例如:
url-sugar([constant('pages'),
optional(variable('language','[a-z]{2}'),
optional(variable('filter',[a-z]+'),
,page-view,name='page')
在这种情况下,不可能区分`/pages/it/``和``pages/blogposts/``。变量允许消除歧义,设置“unamuous”标志:
url-sugar([常量('pages'),
可选(变量('language','[a-z]{2},unamuous=true)),
可选(变量('filter',[a-z]+',unamuous=true),
,页面视图,name='page')
url,如`/pages/language:it/```,``/pages/filter:blogposts/``或`/pages/language:it/filter:blogposts/``.
…_ django-templatetags-sugar:http://github.com/alex/django-templatetag-sugar