Django永久链接从视图与可选参数

时间:2011-11-05 22:22:53

标签: python django url permalinks

我正在尝试使用一个视图来解析两个url模式,方法是在视图定义中使用可选参数。 我正在关注来自this postthis other question的推荐。

以下是我的网址格式 urls.py

的代码
urlpatterns = patterns('myapp.views',
    url(r'^(?P<slug>[\w-]+)/$', 'my_view', name='main_url'),
    url(r'^(?P<slug>[\w-]+)/(?P<optional>[\w-]*)/$', 'my_view', name='optional_url'),
)

视图的定义:

def my_view(request, slug, optional=None):

一切正常,只要根据网址模式显示模板即可。 但是,当我尝试使用模型永久链接显示链接时,它会中断。正如django docs中所解释的那样,我正在按照获取模型绝对URL的方式。

这是我模型的代码:

class MyModel(models.Model):
    name = models.CharField(max_length=128)
    slug = models.CharField(max_length=32)

    @models.permalink
    def get_absolute_url(self):
        return ('main_url', [self.slug])

问题是get_absolute_url返回一个带有两个参数的url。所以我得到的东西就像这个domain.com/slug//而不是这个domain.com/slug /

如何在没有第二个参数的情况下获取绝对URL? 有什么我做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

您在get_absolute_url函数中返回一个列表,这就是您获得两个参数的原因。 你可以这样做:

class MyModel(models.Model):
    name = models.CharField(max_length=128)
    slug = models.CharField(max_length=32)

    @models.permalink
    def get_absolute_url(self):
        return "/%s/" % self.slug