我正在尝试使用一个视图来解析两个url模式,方法是在视图定义中使用可选参数。 我正在关注来自this post和this 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? 有什么我做错了吗?
由于
答案 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