постоянная ссылка получить переменную - PullRequest
1 голос
/ 08 сентября 2010

Есть ли способ добавить переменные get в URL при использовании постоянной ссылки?

Итак, www.example.com/1999/news/?filter=entertainment

1 Ответ

1 голос
/ 08 сентября 2010

IMHO Постоянная ссылка не должна содержать параметр запроса.Это звучит не совсем правильно.

Тем не менее, существует очень грубый и не похожий на Django способ вернуть URL, подобный тому, который вы указали в методе get_absolute_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.Т.е. вы получите правильный URL, если вы выполните instance.get_absolute_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.Только дополнительный параметр в манекене является дополнительным.

...