django模型url跟踪对象的url并在内容中插入动态链接。别担心,那页地址已经改了。所有的旧链接都将继续工作。
redsolutioncms.django-model-url的Python项目详细描述
Django模型URL帮助您正确显示指向所有对象的链接,即使页面的URL已更改。
使用案例
例如,您的网站上有新闻页面。 你从其他页面向新闻页面添加了很多链接。 有时你不得不更改新闻页面的url。这个动作导致了问题:所有的旧链接现在都断了。 当然,您可以将重定向从旧地址添加到新地址。这可以使应用程序更优雅地解决问题。
它是怎么工作的?
在用超链接保存到数据库的内容之前,django-model-url尝试用类似于{@ myapp.models.MyModel id @}的内容替换它。 模块将搜索显示指定URL的控制器(视图)。 如果找到控制器,模块将调用它并在传递给模板的上下文中查找对象。
当这样的“宏url”出现在响应中时,它将被替换为实际的url。
安装:
在设置中。py:
将'modelurl'添加到INSTALLED_APPS中。
将'modelurl.middleware.ModelUrlMiddleware'添加到MIDDLEWARE_CLASSES的末尾。
配置Django模型URL要使用的可用模型列表
MODELURL_MODELS = [ { 'model': 'myapp.models.MyModel', }, ... ]
四。配置返回指定模型的对象的视图列表。 还必须指定表示对象的上下文变量的名称
MODELURL_VIEWS = [ { 'view': 'myapp.views.get', 'context': 'object', }, ]
如果不想使用视图,可以禁用它:
MODELURL_VIEWS = [ { 'view': 'django.contrib.admin.site.root', 'disable': True, }, ]
用法:
在您的型号中:
保存前,您可以手动检查单个URL
from modelurl.utils import ReplaceByView class MyModel(models.Model): url = models.CharField(max_length=200) def save(self, *args, **kwargs): self.url = ReplaceByView().url(self.url) super(MyModel, self).save(*args, **kwargs)
保存前可以检查HTML
from modelurl.utils import ReplaceByView class MyModel(models.Model): html = models.TextField() def save(self, *args, **kwargs): self.html = ReplaceByView().html(self.html) super(MyModel, self).save(*args, **kwargs)
您可以将django模型url与django-trusted-html一起使用,以使您的html正确、美观和安全。