Гиперссылки в web.py - PullRequest
       10

Гиперссылки в web.py

3 голосов
/ 25 декабря 2011

Как мне заставить web.py извлекать страницу, когда я нажимаю на ссылку? У меня есть это в моем шаблоне:

<a href='add.html'>Home</a>

Когда я нажимаю «Домой», я получаю «не найден».

В моем приложении «/ add» сопоставлен с классом «Add», который возвращает «Boom!» используя шаблон add.html.

urls = ('/', 'Index',
    '/add','Add')

class Add(object):
    def GET(self):
        return render.add('Boom!')

Я чувствую, когда я запрашиваю /add.html, класс Add обработает запрос и вернет 'Boom!'

Почему я продолжаю получать 'not found'?

Ответы [ 2 ]

8 голосов
/ 25 декабря 2011

Источник URI страницы, оканчивающийся на .html lilke /add.html, заключается в том, что в средах статического хостинга это традиционно были отдельные текстовые файлы с html-контентом, и файл, оканчивающийся таким файлом, имеет вид .html

Но ваша система динамична и создает веб-страницы на лету. Для этого необязательно нужны страницы, заканчивающиеся на .html. Хотя вы можете имитировать традиционное поведение, если хотите.

Но в современной и динамичной системе часто предпочитают, чтобы на отдельных «страницах» не было конца.

Таким образом, вы можете, как предлагает Игнасио, просто избавиться от .html и запросить страницу /add, которая является действительным и достаточным уникальным идентификатором для этого ресурса.

Если вы хотите сохранить окончание .html. Вы должны добавить его также в маршрут.

urls = (
  '/', 'Index',
  '/add.html','Add',
)

Вы также можете иметь несколько маршрутов, указывающих на один и тот же ресурс, так что и / add, и /add.html действительны и показывают одно и то же содержимое, но дублирование содержимого имеет и другие недостатки:

urls = (
  '/', 'Index',
  '/add','Add',
  '/add.html','Add',
)

Я рекомендую избавиться от .html. Это означает, что вы придерживаетесь кода из своего вопроса и создаете ссылки на страницу следующим образом:

<a href="/add">add something</a>
5 голосов
/ 25 декабря 2011

Либо измените маршрут на «/add.html», либо измените ссылку на «добавить».

...