代码之家  ›  专栏  ›  技术社区  ›  Josh Hunt bstahlhood

django:打印视图的URL,而不硬编码该URL

  •  8
  • Josh Hunt bstahlhood  · 技术社区  · 17 年前

    我能打印一个网址吗 /admin/manage/products/add 模板中的某个视图?

    这是我要为其创建链接的规则

    (r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),
    

    我想在不进行硬编码的情况下使用/管理/产品/添加模板。我该怎么做?

    编辑: 我没有使用默认管理员(嗯,我是,但它在另一个URL),这是我自己的

    3 回复  |  直到 9 年前
        1
  •  15
  •   Harley Holcombe    12 年前

    你可以使用 get_absolute_url ,但这只对特定对象有效。由于您的对象尚未创建,因此在本例中它将不起作用。

    你想用 named URL patterns . 下面是一个简短的介绍:

    将urls.py中的行更改为:

    (r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}, "create-product"),
    

    然后,在您的模板中,使用此项显示URL:

    {% url create-product %}
    

    如果使用django 1.5或更高版本,则需要:

    {% url 'create-product' %}
    

    你可以用命名的URL模式做一些更强大的事情,它们非常方便。请注意,它们仅在开发版本(以及1.0)中。

        2
  •  2
  •   dfarrell07    13 年前

    如果你使用 named url patterns 您可以在模板中执行以下操作

    {% url create_object %}
    
        3
  •  0
  •   dfarrell07    13 年前

    创建URL的首选方法是添加 get_absolute_url 模型类的方法。你可以硬编码这条路,这样你至少可以更接近于遵循亲吻的理念。

    您可以利用 permalink 基于URL配置来表示路径的装饰器。

    您可以在Django文档中阅读更多内容 here .