django url模式帮助程序
urlman的Python项目详细描述
为django模型创建url的更好方法。
将诸如get_absolute_url之类的内容替换为.urls属性 可以引用其他url并构建合理的事物树,并且可以 然后使用instance.urls.name访问。
这样,您就可以在模型实例上直接使用url(而不是反转 通过url查找函数,不仅速度慢而且通常很难提供 的参数。您只需将{{ instance.urls.view }}放入模板中即可获得 一个链接。
它还允许您使用python字符串格式语法将参数放入 模型实例本身或来自同一集中的其他URL。
示例:
importurlmanmodelGroup(models.Model):...classurls(urlman.Urls):view="/{self.slug}/"users="{view}users/"admin="{view}admin/"defmy_view(request):group=...returnredirect(group.urls.view)
建议使用“view”作为 get_absolute_url,并在您的模型上具有这样的函数:
defget_absolute_url(self):returnself.urls.view
要构建完整的url,请使用full方法,如下所示:
defmy_view(request):group=...returnredirect(group.urls.admin.full(scheme='https'))
您可以在您的 url类从urlman默认值更改默认主题和主机名 分别是http和localhost。
如果使用django rest框架,可以使用urlman.UrlManField提供 具有一组URL的对象。它是这样使用的(只有urls参数 是必需的):
from urlman import UrlManField class MySerializer(ModelSerializer): urls = UrlManField(urls=['view', 'edit'], attribute='urls', full=True)