Лучшая практика в Webapp - PullRequest
0 голосов
/ 18 мая 2010

После всего лишь 6-9 месяцев. Вероятно, я несколько раз менял свой стиль кодирования после прочтения некоторого кода или чтения передового опыта. Но одна вещь, с которой я еще не столкнулся, это хорошая причина для заполнения template_dict.

На данный момент я передаю template_dict ряду методов (которые изменяют / модифицируют его) и возвращает is. В результате каждый метод принимает template_dict в качестве первого аргумента и возвращает его, и это, на мой взгляд, не лучшее решение.

Идея состоит в том, чтобы иметь метод, который обрабатывает все изменения. Но мне интересно, есть ли лучшая практика для этого? Или это «делай то, что чувствуешь», типа вещей?

2 вещи, которые я считаю довольно уродливыми, это отправлять в качестве аргумента и возвращать его во всех методах. И просто имя переменной пишется ххх число раз в коде:)

.. Фредрик

РЕДАКТИРОВАТЬ :

Чтобы продемонстрировать, что я имею в виду с template_dict (я думал, что это общий термин, я получил его от google реализации шаблонных методов django).

У меня есть требование, которое я передаю шаблону с помощью метода render.template:

template.render(path, template_dict) #from google.appengine.ext.webapp import template

Этот template_dict мне нужно манипулировать, чтобы отправлять данные / dicts / lists в представление (html-файл). Если я не ошибаюсь.

Итак, с учетом этого мой код обычно выглядит примерно так:

## Main.py file to handle the request and imports classes.

from models import data
from util import foo

class MainHandler(webapp.RequestHandler):
    template_dict = { 'lang' : 'en' }
    ## reads all current keys and returns dict w/ new keys, if needed
    template_dict = data.getData(template_dict) 
    if 'unsorted_list' in template_dict:
        template_dict = util.foo(template_dict)
    ## and so on....

    path = os.path.join(os.path.dirname(__file__), 'templates', file)
    self.response.out.write(template.render(path, template_dict))

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

Но вы должны сделать общую идею.

1 Ответ

1 голос
/ 18 мая 2010

Если все рассматриваемые функции являются методами некоторого объекта foo, то каждая из них может ссылаться на контекст, который они создают (я думаю, это то, что вы подразумеваете под "шаблоном dict"?) Как self.ctx или тому подобное (имя атрибута несколько произвольно, ключевой момент в том, что вы можете сохранить контекст как атрибут foo, обычно инициализируемый как пустой в foo '* __init__, и постепенно наращивать его через foo методы, в конце концов, foo.ctx готов для вас).

Это не работает в более общем случае, когда функции повсюду, а не являются методами одного объекта. В этом случае ctx необходимо передать каждой функции (хотя функция обычно может изменить ее на месте и не должна возвращать ее).

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