2016-10-05 4 views
1

web2py book's "Core" chapter говорит:Имеет ли допустимый URL-адрес запроса расширение «.html» в web2py?

web2py карты GET запросов/POST вида:

http://127.0.0.1:8000/a/c/f.html/x/y/z?p=1&q=2 

функционировать п в контроллере "c.py" в аппликация,

Однако я бы предположил, что действительно действительный URL-адрес не будет содержать .html. На самом деле, далее на той же странице мы читаем:

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

И ясно, что .html не является частью args но она имеет точку в нем. Следовательно, URL-адрес примера противоречит действительному URL-адресу, как описано ниже.

+0

@ Ответ cdonts правильный. Для более подробной информации я предлагаю найти раздел [The Core] (http://web2py.com/books/default/chapter/29/04/the-core) для случаев «расширения». – Anthony

ответ

2

Часть после точки используется web2py для отображения правильного представления. Оба a/c/f.html и a/c/f.json вызывают ту же функцию (f внутри контроллера c.py), но первый будет оказывать views/c/f.html в то время как позже views/c/f.json (если он присутствует, в противном случае он будет оказывать views/generic.json в локальном или поднять 404 в производстве).

Обратите внимание, что расширение можно опустить, а по умолчанию будет .html. Кроме того, вы можете установить response.view внутри вашего контроллера, чтобы изменить поведение по умолчанию.

Так что да, действительный URL-адрес может иметь расширение.

Надеюсь, это поможет!

+0

Просто, чтобы уточнить, по умолчанию 'views/generic.json' отключен, даже на localhost. Это можно изменить, указав «response.generic_patterns» (приложение scaffolding должно быть закодировано для [разрешить все общие представления для локальных запросов] (https://github.com/web2py/web2py/blob/1877f497309e71918aa78e1a1288cbe3cb5392ec/applications/welcome/ models/db.py # L55), но это не поведение по умолчанию). – Anthony

+0

@ Энтони Спасибо за исправление :-) – cdonts

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

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