有没有办法在使用固定链接时将get变量添加到url中?
所以www.example.com/1999/news/?filter=entertainment
答案 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配置有多相似。虚拟中只有查询参数是额外的。