使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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaBridge errno=10054被Remotehost关闭   javafx如何在每次调用方法中的变量时更新它?(爪哇)   java mod_群集在发现后未平衡负载   Java软件编辑器/语法高亮   java为什么不能强制转换数组的结果。asList()到ArrayList?   java HIBERNATE:无法使用HIBERNATE从MySQL中提取数据   java在Google地图片段上添加布局   java在AbstractTableModel中执行setValueAt之前,我如何做一些事情?   java在整个Tomcat运行时保存变量   java如何在Thymeleaf模板中获取环境变量的值?   java Selenium Chrome驱动程序针对属性的标签   java正则表达式捕获未知数量的重复组