Django视图中带可选参数的永久链接
我正在尝试用一个视图来处理两种不同的URL模式,方法是使用可选参数来定义这个视图。
这是我在urls.py中的URL模式代码:
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):
一切正常,按照URL模式显示模板没有问题。
但是,当我尝试使用模型的永久链接来显示链接时,就出现了问题。我是按照Django文档中获取模型绝对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有两个参数。所以我得到的URL是这样的:domain.com/slug//,而不是这样:domain.com/slug/。
我该如何获取没有第二个参数的绝对URL呢?我是不是做错了什么?
谢谢!
1 个回答
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