在模板中引用数据表网址

时间:2011-05-11 19:14:10

标签: django django-templates django-views

我想将django Databrowse集成到我的应用程序中。

归结为从模板或视图中指向数据存储网址以获得数据分析的增强型向下钻取功能。

是否有一种简单的方法可以从数据中心对象中提取网址?

3 个答案:

答案 0 :(得分:2)

嗯,一个简单的方法就是构建你想要的url,并将其传递给模板:

databrowse_url = '/'.join((obj._meta.app_label, obj._meta.module_name, 'objects', str(obj.id)))

然后在模板中(假设你的数据库位于/databrowse

<a href="/databrowse/{{ databrowse_url }}">

哪个会给你一个网址:/databrowse/app_name/model_name/objects/1

答案 1 :(得分:0)

您可以使用databrowse urls.py

中显示的格式重新创建数据存储网址

您可以通过传递视图名称+参数来使url tag在模板中工作。

但是,如果你browse the source,看起来databrowse会为它使用的对象添加'url'属性。

修改

给定EasyModel实例,您可以执行以下操作:

my_easy_model_instance.url()

大多数'Easy'类都有一个url()或urls()方法。

答案 2 :(得分:0)

结束编写mixin类,获取相关的EasyInstance并重用url()

from django.contrib.databrowse.datastructures import EasyModel
from django.contrib.databrowse import site   

class DatabrowseMixin:
     def url(pyClass):
          if not site.root_url:
               #hack, but root_url is not set until the first databrowse view
               #and resolving urlconf does not work either
               site.root_url = '/databrowse/' 

          easy_model = EasyModel(site, pyClass.__class__)
          obj = easy_model.object_by_pk(pyClass.pk)

          return obj.url()

class MyModel(models.Model, DatabrowseMixin):
     ...

现在在我的模板中,我可以重用指向数据行中对象网址的my_model_instance.url标记。