Добавить слэш не работает - PullRequest
10 голосов
/ 27 февраля 2012

У меня есть этот urlConf и он работает нормально при обращении к нему с косой чертой.нет атрибута 'resolv' ', когда запрос сделан с отсутствующей косой чертой

Есть идеи ??

Ответы [ 5 ]

15 голосов
/ 28 февраля 2012

APPEND_SLASH не происходит безоговорочно - он вступает в силу только в том случае, если после попытки всех существующих шаблонов URL (и связанного представления, если оно соответствует), Django собирается вернуть 404.

Если это так и исходный запрос не имеет косой черты в конце, тогда Django проверяет, соответствуют ли какие-либо шаблоны URL завершающей косой черте. Если это так, он выдает перенаправление HTTP.

Если какой-либо из ваших шаблонов URL совпадает с исходным запросом (без косой черты), Django сначала попытается выполнить его. Если это вызывает исключение, то вы увидите это (я подозреваю, что это то, что происходит). Джанго никогда не получит редирект.

3 голосов
/ 13 сентября 2013

Если вы добавили какое-то свое собственное промежуточное программное обеспечение, порядок промежуточного программного обеспечения важен. У меня был похожий случай, когда косая черта работала раньше, и добавление промежуточного программного обеспечения сломало его. После переключения заказа все снова заработало.

3 голосов
/ 27 октября 2012

Это, безусловно, решит вашу проблему.Вы можете указать URL с косой чертой или без нее, это даст тот же требуемый результат.

В файле urls,

urlpatterns = patterns('', url(r'^allvideo/?$','my.views.allvideo'))

Добавьте знак вопроса после косой черты.Когда вы вводите URL-адрес, он сначала проверяет косую черту или совпадает с ней без косой черты и в любом случае даст вам тот же ответ.Надеюсь, это помогло вам.Удачного кодирования.

0 голосов
/ 21 августа 2013

Даже если это кажется невероятным, у меня была та же проблема, и просто перезапуск сервера разработки устранил ее. Просто чтобы запомнить:

python manage.py runserver
0 голосов
/ 28 февраля 2012

Не уверен, что является основной причиной, но это может помочь вам обойти это или сузить:

(1) Вы пробовали либо использовать фактическую функцию представления в качестве аргумента (вместострока):

from my.views import allvideo
urlpatterns = patterns('', url(r'^allvideo/$',allvideo))

(2) Или пропустите, используя функцию url:

urlpatterns = patterns('', (r'^allvideo/$','my.views.allvideo'))
...