Re: [better-py-ru] Re: Вызов и передача параметров локальной переменной из другого модуля.

133 views
Skip to first unread message

Тимур Зарипов

unread,
Jun 4, 2012, 4:42:41 AM6/4/12
to better-p...@googlegroups.com
Эээ... Кажется надо просто вызвать в __index функцию templ, с параметрами, т.к. она уже импортирована (кстати, import * -- зло), а этой самой templ вернуть через обычный return переменную engine. Или я чего-то не понимаю? 
Я бы, наверное, сделал это через декоратор кстати, но в самом простом случае это выглядит как-то так (добавил 2 строчки с комментариями):

# view.py

import tenjin 
from tenjin.helpers import *
from os import path

def templ(title_var, items):
....template_path = path.join(path.dirname(__file__), 'static/templates')
....engine = tenjin.Engine(path=[template_path])

....templ_var = {
       'title': title_var,
        'items': items,    
    }
.
.
.
....return engine                                   # возвращаем экземпляр движка

#application.py

from view import *

def __index(request):
    if request.method == "POST":  
    #код не относящийся к теме
        if result is None:            
            items = 'Account is available'    
            engine = templ({}, items)           # Получаем engine

2012/5/31 Zhanat Suleimenov <suleimen...@gmail.com>
Забыл написать, как вызвать engine из application.py? 

четверг, 31 мая 2012 г., 22:07:52 UTC+6 пользователь Zhanat Suleimenov написал:
Доброго времени суток! Вопрос:
Как вызвать и передать параметры локальной переменной из другого модуля? листинг ниже

# view.py

import tenjin 
from tenjin.helpers import *
from os import path

def templ(title_var, items):
....template_path = path.join(path.dirname(__file__), 'static/templates')
....engine = tenjin.Engine(path=[template_path])

....templ_var = {
       'title': title_var,
        'items': items,    
    }

#application.py

from view import *

def __index(request):
    if request.method == "POST":  
    #код не относящийся к теме
        if result is None:            
            items = 'Account is available'    # Присвоить значение items в view.py




    

--
Группа: http://groups.google.com/group/better-python-ru
Отписка: better-python-...@googlegroups.com

Алексей С.

unread,
Jun 5, 2012, 11:14:52 AM6/5/12
to better-p...@googlegroups.com
а запихать в request variable='index' низя?

5 июня 2012 г., 16:13 пользователь Zhanat Suleimenov
<suleimen...@gmail.com> написал:
> Спасибо за ответ. Весьма полезно!
> У меня возник ещё один вопрос:
>
> #init.py
>
> #!/usr/bin/python26
> # -*- coding: utf-8
> import os
> from gevent.pywsgi import WSGIServer
> from werkzeug.wsgi import SharedDataMiddleware
> from werkzeug.wrappers import Request, Response
> from werkzeug.wsgi import responder
> from werkzeug.routing import Map, Rule
> from application import *
>
>
>
> @responder
> def application(environ, start_response):
>     request = Request(environ)
>     urls = url_map.bind_to_environ(environ)
>     return urls.dispatch(lambda e,  v: views[e](request, **v),  # request
>                          catch_http_exceptions=True)
> if __name__ == '__main__':
>     print 'Serving on 8000...'
>     WSGIServer(('', 8000), application).serve_forever()
>
>
> #application.py
>
> from werkzeug.routing import Map, Rule
> from os import path
> from db import db
> import view
>
>
> url_map = Map([
>     Rule('/', endpoint='index'),
>     Rule('/login', endpoint='login'),
>     Rule('/talk', endpoint='talk'),
>
>     ])
> views = {
>     'index': view.__render_index( request, 'index' ), # Тут нужно вызвать
> функцию с аргументами variable = 'index', а что передать вместо request?
> Если не писать request выдает ошибку - не хватает аргументов
>     'login':view.__render_login,
>     'talk': view.__render_talk,
>     }
>
>
> def __render_index(request, variable):
>     _title  = None
>     _template = { 'title': _title,'items':  variable , }
>     return Response(engine.render('index.html', _template),
> mimetype='text/html')

Zhanat Suleimenov

unread,
Jun 5, 2012, 11:54:59 PM6/5/12
to better-p...@googlegroups.com
Я думаю что "низя", да и зачем environ забивать посторонней информацией.

вторник, 5 июня 2012 г., 21:14:52 UTC+6 пользователь u960 написал:
а запихать в request  variable='index' низя?

5 июня 2012 г., 16:13 пользователь Zhanat Suleimenov

> Отписка: better-python-ru+unsubscribe@googlegroups.com

Алексей С.

unread,
Jun 6, 2012, 1:46:58 AM6/6/12
to better-p...@googlegroups.com
request это не environ

и я так понимаю request скорее всего содержит например GET переменные,
поэтому логично "index' которая возможно может фигурировать в get
запросе, можно записахать в request, типа вида request.get['wariable']
= index

6 июня 2012 г., 7:54 пользователь Zhanat Suleimenov
<suleimen...@gmail.com> написал:

>> > Отписка: better-python-...@googlegroups.com
>
> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-...@googlegroups.com

Алексей С.

unread,
Jun 6, 2012, 8:44:39 AM6/6/12
to better-p...@googlegroups.com
переменные гет запроса откуда берутся? из request?

6 июня 2012 г., 16:23 пользователь Zhanat Suleimenov
<suleimen...@gmail.com> написал:
> Request это обертка для environ. Это кусок из документации werkzeug
>
> The request and response objects wrap the WSGI environment or the return
> value from a WSGI application so that it is another WSGI application (wraps
> a whole application).
>
>
>
>
> среда, 6 июня 2012 г., 11:46:58 UTC+6 пользователь u960 написал:


>>
>> request это не environ
>>
>> и я так понимаю request скорее всего содержит например GET переменные,
>> поэтому логично "index' которая возможно может фигурировать в get
>> запросе, можно записахать в request, типа вида request.get['wariable']
>> = index
>>
>> 6 июня 2012 г., 7:54 пользователь Zhanat Suleimenov

Zhanat Suleimenov

unread,
Jun 6, 2012, 4:27:06 PM6/6/12
to better-p...@googlegroups.com
Да, но проблема в том, что если я делаю как описано ниже, т.е. ставлю переменную request, интерпретатор выдает ошибку неизвестное имя request. вызвать её из init не удастся, объявить глобально для этого модуля тоже, не хотелось бы. 

views = {
>> >     'index': view.__render_index( request, 'index' ), # Тут нужно
>> > вызвать
>> > функцию с аргументами variable = 'index', а что передать вместо request?
>> > Если не писать request выдает ошибку - не хватает аргументов
>> >     'login':view.__render_login,
>> >     'talk': view.__render_talk,
>> >     } 

среда, 6 июня 2012 г., 18:44:39 UTC+6 пользователь u960 написал:
переменные гет запроса откуда берутся? из request?

6 июня 2012 г., 16:23 пользователь Zhanat Suleimenov

Zhanat Suleimenov

unread,
Jun 6, 2012, 4:35:57 PM6/6/12
to better-p...@googlegroups.com
Если же объявляю в __render_index

def __render_index( request.get['wariable'] = index ):

Указывает на точку после request 
SyntaxError: invalid syntax


четверг, 7 июня 2012 г., 2:27:06 UTC+6 пользователь Zhanat Suleimenov написал:

Алексей С.

unread,
Jun 7, 2012, 1:25:42 AM6/7/12
to better-p...@googlegroups.com
я думал как то так, и про то как добавить гет значение в request
написал отбалды, я незнаю какой там синтаксис у werkzeug, это вы в
документации гляньте

request.get['wariable'] = index
def __render_index( request):

7 июня 2012 г., 0:35 пользователь Zhanat Suleimenov
<suleimen...@gmail.com> написал:

>>> >> >> > Отписка: better-python-...@googlegroups.com
>>> >> >
>>> >> > --
>>> >> > Группа: http://groups.google.com/group/better-python-ru
>>> >> > Отписка: better-python-...@googlegroups.com
>>> >
>>> > --
>>> > Группа: http://groups.google.com/group/better-python-ru
>>> > Отписка: better-python-...@googlegroups.com
>
> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-...@googlegroups.com

Zhanat Suleimenov

unread,
Jun 7, 2012, 7:04:54 AM6/7/12
to better-p...@googlegroups.com
Ясно

четверг, 7 июня 2012 г., 11:25:42 UTC+6 пользователь u960 написал:

>>> >> >> > Отписка: better-python-ru+unsubscribe@googlegroups.com
>>> >> >
>>> >> > --
>>> >> > Группа: http://groups.google.com/group/better-python-ru
>>> >> > Отписка: better-python-ru+unsubscribe@googlegroups.com
>>> >
>>> > --
>>> > Группа: http://groups.google.com/group/better-python-ru
>>> > Отписка: better-python-ru+unsubscribe@googlegroups.com
>
> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-ru+unsubscribe@googlegroups.com

Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages