Django URL模式助手
项目描述
为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 查看散列值)