管理与基于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/)
了解更多用法。

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

推荐PyPI第三方库


热门话题
java在“for语句”中打印数组   使用jaxb外部绑定自定义时发生java错误   jdbc如何在Java(ProcessBuilder)中创建GlassFish的连接池   java正在尝试打印名称   java在Spring表达式语言中使用正则表达式提取子字符串   java如何将字符串流式传输到另一个类   jakarta ee ResourceBundle来自Java/Struts和replace表达式   tomcat支持java的可能原因。网SocketInputStream。socketRead0   java无法从joda dateTime对象中删除毫秒   java永远隐藏导航栏   具有更多字段的java ItemizeOverlay   使用jsptag的java搜索记录   java如何在Android Q中检查互联网连接?   java如果1是标准的EOF字节,为什么DataInputStream会这样做?   线程环境中的多线程mongodb java客户端断开连接   java正则表达式中的非捕获组   java疯狂拍卖定制售价   java Mybatis自动映射以支持dot   java在线获取原始格式的JSON URL   java意外字符“ï”,使用Jackson解析JSON