Python App Engine: шаблоны не отображаются должным образом - PullRequest
0 голосов
/ 06 марта 2012

Я не понимаю, что может быть не так с этим кодом для рендеринга страниц.

def post(self):
        acct = self.request.get('account')
        pw = self.request.get('password')

        que = db.Query(User)
        que = que.filter('account =', acct)
        que = que.filter('password =', pw)
        results = que.fetch(limit = 1)

        values = { }
        newval = dict(values)
        newval['path'] = self.request.path

        if len(results) > 0:
            path = os.path.join(os.path.dirname(__file__), 'templates/sites.htm')
            self.response.out.write(template.render(path, {}))

Я звоню из формы входа, расположенной на странице с именем "loginscreen.htm" . Когда приложение достигает этой части кода:

if len(results) > 0:
    path = os.path.join(os.path.dirname(__file__), 'templates/sites.htm')
    self.response.out.write(template.render(path, {}))

и пытается перенаправить на 'sites.htm' , страница 'sites.htm' правильно отображается, но в адресной строке по-прежнему показывает:

'http://localhost:8080/login' ("/ login" направляет входящий запрос от "loginscreen.htm"), когда ' http://localhost:8080/sites.htm' должен будет показано вместо

Основная проблема заключается в том, что если я перезагрузлю страницу, появится диалоговое окно «Подтверждение повторной отправки формы» , позволяющее пользователям снова отправить форму. Но если я заменю

path = os.path.join(os.path.dirname(__file__), 'templates/sites.htm')
self.response.out.write(template.render(path, {}))

по

self.redirect('sites.htm') 

в адресной строке отображается 'http://localhost:8080/sites.htm' правильно.

Так что не так с кодом?

Извините, если я сделал этот вопрос более сложным, чем должен быть.

Заранее спасибо!

1 Ответ

4 голосов
/ 06 марта 2012

Ваша проблема здесь недопонимание:

позвоните по ней из формы входа, расположенной на странице с именем "loginscreen.htm".Когда приложение достигает этой части кода:

if len(results) > 0:
    path = os.path.join(os.path.dirname(__file__), 'templates/sites.htm')
    self.response.out.write(template.render(path, {}))

и пытается перенаправить на «sites.htm», страница «sites.htm» отображается правильно, но по адресустрока все еще показывает:

Этот код не делает ничего похожего на перенаправление - все, что он делает, это говорит AppEngine ответить на эту попытку входа в систему, выдав шаблон в sites.htm в ответ назапрос POST.Если вы хотите перенаправить, вам нужно сделать это явно (как вы, кажется, уже пытались).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...