2010-08-11 1 views
1

У меня проблема, когда мне нужно передать параметры запроса для запроса GET, но Django не правильно разрешает URL-адрес.Django Url не разрешается с параметрами запроса

Мой urls.py выглядит следующим образом:

from django.conf.urls.defaults import * 
    urlpatterns = patterns('', 
     url(r'^confirm_cancel', 
      'myapp.views.confirm_cancel_method', 
      name='myapp_confirm_cancel'), 
     ) 

Когда я Гото/confirm_cancel some_id = х я получаю 404, говоря мне? "Нет MyModel соответствует запросу." Когда я устанавливаю точку останова в обработчике просмотра, он не попадает, когда я перехожу к этому URL-адресу.

Однако, если у меня есть/confirm_cancel/x /, моя точка обзора будет ударяться.

Еще одно замечание: это работало в Django 1.1, но теперь оно сломанно, так как я обновился до 1.2.

Любые мысли?

Спасибо!

+2

Почтовый индекс вид, если вы не хотите, чтобы люди тратить свое время угадывания вещи. –

ответ

1

Я скопировал все другие шаблоны url.py в своем посте.

Оказывается, проблема заключалась в том, что у меня был r'^(?P<my_id>\w+)/?$' для одного из URL-адресов в верхней части urlpatterns.

В следующий раз я научусь вставлять все, а не вишневую подборку, что, по моему мнению, является нарушающим строкой кода.

Странно, что это не вызывает Django 1.1 сломать ... Я предполагаю, что это была ошибка, которая была установлена ​​в 1,2

+1

Рад, что он исправлен. Идем дальше и принимаем ваш собственный ответ, поэтому вопрос считается решенным (и решение очевидно для других людей, сталкивающихся с этой проблемой). – ars

+0

Я очень близко спросил, существует ли соответствующий шаблон url ранее в списке. –

0

Вы проверили, был ли это случай trailing slash?

+0

Да, косая черта или никакая косая черта, она все еще терпит неудачу. – LeeMobile

1

Я не думаю, что проблема связана с вашим URL. Вы используете ярлык вроде get_object_or_4o4 где-то на ваш взгляд? Например:

get_object_or_404(MyModel, pk=99) 

бы привести к «No MyModel спичек данный запрос, если бы не было записи в таблице с первичным ключом 99.

+0

Да, я использую get_object_or_404(), но до того, как эта строка попала, я поставил точку останова отладки и эта точка останова не попала.Так что это не то место, где он выбрасывает 404. – LeeMobile

+0

Попытка сузить его ... Введенное вами сообщение об ошибке указывает на проблему с * моделью *, которая не найдена, а не обработчик URL. Это может помочь вставить ваш код просмотра и всю трассировку стека. – ars

+0

+1 хорошая аргументация. –

1

Мы должны увидеть, что в соответствующем . вид функции

В идеале, это должно выглядеть примерно так:

def confirm_cancel_method(request, some_id=None): 
    some_id = request.REQUEST.get('some_id', some_id) 
    some_record = get_object_or_404(SomeModel, pk=some_id) 
    ... 

обновления

Извините, вы только что видели свою записку о контрольной точке. Одна вещь, которую я рекомендовал бы меняет конфигурации к этому:

from django.conf.urls.defaults import * 
urlpatterns = patterns('', 
    url(r'^confirm_cancel/?$', 
     'myapp.views.confirm_cancel_method', 
     name='myapp_confirm_cancel'), 
    ) 

Добавление /?$ в конце означает, что только /confirm_cancel или /confirm_cancel/ будет соответствовать URL. Прямо сейчас, потому что у вас нет конца $, все, начиная с confirm_cancel, будет соответствовать. Фиксация шаблона по крайней мере решит эту проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^