跳转到主要内容

Django URL模式助手

项目描述

Test Status Test Coverage Status

为Django模型进行URL操作的一种更优雅的方式。

使用类似get_absolute_url的替代品,通过.urls属性来引用其他URL并构建合理的事物树,然后可以通过instance.urls.name来访问。

这样你就可以在模型实例上直接设置URL(而不是通过URL查找函数反向解析,这不仅速度慢,而且很难提供参数)。只需将{{ instance.urls.view }}抛入模板即可获取链接。

它还允许你使用Python字符串格式化语法将参数从模型实例本身或同一集中的其他URL中放入URL中。

示例

import urlman

class Group(models.Model):

...

    class urls(urlman.Urls):
        view = "/{self.slug}/"
        users = "{view}users/"
        admin = "{view}admin/"


def my_view(request):
    group = ...
    return redirect(group.urls.view)

建议将“view”用作get_absolute_url的等效名称,并在你的模型上有一个类似这样的函数

def get_absolute_url(self):
    return self.urls.view

要构建完整的URL,请使用以下方式调用full方法

def my_view(request):
    group = ...
    return redirect(group.urls.admin.full(scheme='https'))

你可以在你的Url类中实现get_scheme(url)get_hostname(url)方法,以更改你的默认主题和主机名,分别从urlman默认的‘http’‘localhost’

如果您使用Django REST框架,可以使用urlman.UrlManField来提供一个包含一组URL的对象。它使用方式如下(只需提供urls参数)

from urlman.serializers import UrlManField

class MySerializer(ModelSerializer):
    urls = UrlManField(urls=['view', 'edit'], attribute='urls', full=True)

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

urlman-2.0.2.tar.gz (7.7 kB 查看散列值)

上传日期

构建分布

urlman-2.0.2-py2.py3-none-any.whl (8.0 kB 查看散列值)

上传日期 Python 2 Python 3

由以下支持