django永久链接变量

时间:2010-09-07 20:44:50

标签: django permalinks

有没有办法在使用固定链接时将get变量添加到url中?

所以www.example.com/1999/news/?filter=entertainment

1 个答案:

答案 0 :(得分:1)

IMHO永久链接不应包含查询参数。听起来不太合适。

也就是说,有一种非常苛刻和非Django的方式来返回一个类似于你从模型的get_absolute_url()方法指定的URL。

<强>步骤

首先添加虚拟URL和相应的无操作视图。对于例如

# models.py
class MyModel(models.Model):
    ...
    @models.permalink
    def get_absolute_url(self):
        return ('dummy_url', [str(self.id), self.filter])

# urls.py
url(r'^news/(?P<model_id>\d+)/\?category=(?P<category>\w+)$', 
    'dummy_url', {}, name = 'dummy_url'),

# views.py
def dummy_url(request, *args, **kwargs):
    pass

此虚拟对象仅用于生成 URL。即如果执行instance.get_absolute_url(),您将获得正确的URL。

您必须添加另一个正确的 URL配置和匹配的视图,以便在调用URL时实际显示实例页面。这样的事情。

# urls.py
url(r'^news/(?P<model_id>\d+)/$', 
    'correct_view', {}, name = 'correct_view'),

# views.py
def correct_view(request, *args, **kwargs):
    # do the required stuff.

correct_view必须从GET中提取request参数。

请注意虚拟和正确的URL配置有多相似。虚拟中只有查询参数是额外的。