Есть ли способ добавить переменные в url при использовании permalink?django permalink get variable
Так www.example.com/1999/news/ ? Фильтр = развлечения
Есть ли способ добавить переменные в url при использовании permalink?django permalink get variable
Так www.example.com/1999/news/ ? Фильтр = развлечения
ИМХО Ссылка не должна содержать параметр запроса. Это не совсем правильно.
Это очень крутой и не-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-адресов. Только параметр запроса является дополнительным в манекене.
hm, ничего себе. нормально, поэтому, если я не использую параметр get param, то как я могу передать текст, который может включать в себя такие вещи, как пробел или, и т. д.? – killerbarney
См. Этот вопрос. Речь идет о передаче текста с пробелами в URL. http://stackoverflow.com/q/3675368/140185 Кроме того, вы не можете передавать id или slug вместо поля с пробелами/запятыми? –
Я пытаюсь передать имя человека. Поскольку это может быть ссылка в местах, POST не кажется правильным. Может работать слизняк, но правильно ли иметь апостроф в URL-адресе? Это не выглядит правильным. – killerbarney