管理与基于jigo的模型实例相关联的url参数的简单方法。
django-model-urls的Python项目详细描述
#django模型url
[![构建状态](https://travis ci.org/vinyll/django model urls.png)(https://travis-ci.org/vinyll/django-model-urls)
此应用程序使URL的使用量减少。
它通过传递对象将url关键字映射到模型对象实例
实例作为url的参数。
简而言之,拥有一个“article”模型实例,您可以编写:
``` HTML
<;a href=“{{url('article:detail',article)}”>;查看此文章<;/a>;
```
在您撰写本文时:
``` HTML
<;a href=“{url('article:detail',year=article.year,month=article.month,slug=article.slug)}”>;查看本文<;/a>;
```
这是为您的模板以及“reverse()”和保留
要使用的其他URL。
>;现在它是为[jinja2]构建的(http://jinja.pocoo.org/),使用
易于使用的[jingo]适配器(https://github.com/jbalogh/jingo)。
>;如果您使用的是普通django模板,请参阅0.3.1版。
>;以后应该会有一个新版本的plain django。
安装
通过PIP下载![PIP徽章](https://pypip.in/v/django-model-url/badge.png)
```猛击
pip安装django模型url
```
或获取出血边缘版本:
```猛击
pip安装git+https://github.com/vinyll/django-model-url.git
```
将“模型”URL添加到您的“设置”文件中:
``Python
已安装的应用程序=(
“京哥”,
“模型URL”,
)
```
你完了!
如何使用
在下面的示例中,我们将考虑此模型:
``Python
类文章(models.model):
slug=型号.slugfield()
标题=models.charfield(最大长度=50)
日期=models.datefield()
@属性
定义年份(自我):
返回self.date.year
@属性
定义月(自):
返回self.date.month
```
此URL:
``Python
urlpatterns=模式('',
url(r'^article/(?p<;年份>;\d{4})/(?p<;月>;\d{2})/(?p<;slug>;[\w-]+)/$',
article view.as_view(),name=“article_details”),
)
```
和“article”是“article”类的实例。
在模板中
``Python
url(“文章详细信息”,文章)
```
在视图中
``Python
从模型URL.URLSolver反向导入
背面(“物品详情”,物品)
```
两者都将生成以下格式的URL:
```
/2014/11/如何优化django url/
```
额外工具
基本上,您应该能够在所有情况下使用“url()”和“reverse()”。
但是,也可以使用这些工具:
模板帮助程序
-`url(viewname,*args,**kwargs)`将尝试在参数中检测实例
然后选择是使用简单URL还是使用模型URL。
-`simple_url(viewname,*args,**kwargs)`是jigo'url()的别名`
帮助强制使用它。
-`model_url(viewname,instance,*args,**kwargs)`将从
第一个参数中的实例。
URL反转
这些函数在“model\u url.urlsolvers”中可用。
-`模型反转(viewname,instance,urlconf=none,args=none,kwargs=none,
prefix=none,current_app=none)`将根据实例生成URL
属性。
-`reverse(viewname,*args,**kwargs)`将回退到'u model\'u reverse().
在参数或django的_reverse()中找到实例。
配置
您的设置的可选配置是:
``Python
model_url_helper_override=false
```
这个选项将不允许jigo的“url()”助手被
模型URL中的一个。
在这种情况下,应该使用“model_url()”来使用实例。
更多示例
用例
一个常见的用例是从基于pk的url切换到slug。
使用django模型url意味着更新url.py文件以考虑slug
不改变视图或模板文件。
阅读测试
请参阅[tests.py](https://github.com/vinyll/django-model-urls/blob/master/model-urls/tests/)
了解更多用法。
[![构建状态](https://travis ci.org/vinyll/django model urls.png)(https://travis-ci.org/vinyll/django-model-urls)
此应用程序使URL的使用量减少。
它通过传递对象将url关键字映射到模型对象实例
实例作为url的参数。
简而言之,拥有一个“article”模型实例,您可以编写:
``` HTML
<;a href=“{{url('article:detail',article)}”>;查看此文章<;/a>;
```
在您撰写本文时:
``` HTML
<;a href=“{url('article:detail',year=article.year,month=article.month,slug=article.slug)}”>;查看本文<;/a>;
```
这是为您的模板以及“reverse()”和保留
要使用的其他URL。
>;现在它是为[jinja2]构建的(http://jinja.pocoo.org/),使用
易于使用的[jingo]适配器(https://github.com/jbalogh/jingo)。
>;如果您使用的是普通django模板,请参阅0.3.1版。
>;以后应该会有一个新版本的plain django。
安装
通过PIP下载![PIP徽章](https://pypip.in/v/django-model-url/badge.png)
```猛击
pip安装django模型url
```
或获取出血边缘版本:
```猛击
pip安装git+https://github.com/vinyll/django-model-url.git
```
将“模型”URL添加到您的“设置”文件中:
``Python
已安装的应用程序=(
“京哥”,
“模型URL”,
)
```
你完了!
如何使用
在下面的示例中,我们将考虑此模型:
``Python
类文章(models.model):
slug=型号.slugfield()
标题=models.charfield(最大长度=50)
日期=models.datefield()
@属性
定义年份(自我):
返回self.date.year
@属性
定义月(自):
返回self.date.month
```
此URL:
``Python
urlpatterns=模式('',
url(r'^article/(?p<;年份>;\d{4})/(?p<;月>;\d{2})/(?p<;slug>;[\w-]+)/$',
article view.as_view(),name=“article_details”),
)
```
和“article”是“article”类的实例。
在模板中
``Python
url(“文章详细信息”,文章)
```
在视图中
``Python
从模型URL.URLSolver反向导入
背面(“物品详情”,物品)
```
两者都将生成以下格式的URL:
```
/2014/11/如何优化django url/
```
额外工具
基本上,您应该能够在所有情况下使用“url()”和“reverse()”。
但是,也可以使用这些工具:
模板帮助程序
-`url(viewname,*args,**kwargs)`将尝试在参数中检测实例
然后选择是使用简单URL还是使用模型URL。
-`simple_url(viewname,*args,**kwargs)`是jigo'url()的别名`
帮助强制使用它。
-`model_url(viewname,instance,*args,**kwargs)`将从
第一个参数中的实例。
URL反转
这些函数在“model\u url.urlsolvers”中可用。
-`模型反转(viewname,instance,urlconf=none,args=none,kwargs=none,
prefix=none,current_app=none)`将根据实例生成URL
属性。
-`reverse(viewname,*args,**kwargs)`将回退到'u model\'u reverse().
在参数或django的_reverse()中找到实例。
配置
您的设置的可选配置是:
``Python
model_url_helper_override=false
```
这个选项将不允许jigo的“url()”助手被
模型URL中的一个。
在这种情况下,应该使用“model_url()”来使用实例。
更多示例
用例
一个常见的用例是从基于pk的url切换到slug。
使用django模型url意味着更新url.py文件以考虑slug
不改变视图或模板文件。
阅读测试
请参阅[tests.py](https://github.com/vinyll/django-model-urls/blob/master/model-urls/tests/)
了解更多用法。