<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Python: Веб-разработка без фреймворков (часть 6)</title>
	<atom:link href="http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/</link>
	<description>сообщество программистов</description>
	<lastBuildDate>Fri, 19 Mar 2010 19:57:08 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Сергей Щетинин</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-46838</link>
		<dc:creator>Сергей Щетинин</dc:creator>
		<pubDate>Sat, 22 Nov 2008 00:21:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-46838</guid>
		<description>1) Закоммитил &lt;a href=&quot;http://trac.pythonpaste.org/pythonpaste/changeset/7660&quot;&gt;фикс&lt;/a&gt;.
2) Действительно в статье куда-то потерялось. Патч:
&lt;pre&gt;
                else:
                    bodies.append(unicode(subr.body or &#039;&#039;))
+            r.unicode_body = u&#039;\n\n&#039;.join(bodies)
            r.md5_etag()
            r.last_modified = max([subr.last_modified for subr in subresponses if subr.last_modified] or [None])
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>1) Закоммитил <a href="http://trac.pythonpaste.org/pythonpaste/changeset/7660">фикс</a>.<br />
2) Действительно в статье куда-то потерялось. Патч:</p>
<pre>
                else:
                    bodies.append(unicode(subr.body or ''))
+            r.unicode_body = u'\n\n'.join(bodies)
            r.md5_etag()
            r.last_modified = max([subr.last_modified for subr in subresponses if subr.last_modified] or [None])
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Андрей</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-46649</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Fri, 21 Nov 2008 12:40:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-46649</guid>
		<description>jsjoin_middleware(req, app):

1) req.copy() вызывает ошибку (скорее всего бага webob)

&gt;&gt;&gt; r = webob.Request.blank(&quot;/&quot;)
&gt;&gt;&gt; r.copy()

Traceback (most recent call last):
  File &quot;&quot;, line 1, in 
    r.copy()
  File &quot;build\bdist.win32\egg\webob\__init__.py&quot;, line 1037, in copy
  File &quot;build\bdist.win32\egg\webob\__init__.py&quot;, line 1106, in copy_body
TypeError: an integer is required
&gt;&gt;&gt; r.body
&#039;&#039;
&gt;&gt;&gt; r.body = r.body
&gt;&gt;&gt; r.copy()


&quot;пропатчить&quot; можно на лету вот так:
....
req.body = req.body
for part in parts:
    subreq = req.copy()
    subreq.remove_conditional_
    .....

2) bodies никуда не привязан</description>
		<content:encoded><![CDATA[<p>jsjoin_middleware(req, app):</p>
<p>1) req.copy() вызывает ошибку (скорее всего бага webob)</p>
<p>&gt;&gt;&gt; r = webob.Request.blank(&#8221;/&#8221;)<br />
&gt;&gt;&gt; r.copy()</p>
<p>Traceback (most recent call last):<br />
  File &#8220;&#8221;, line 1, in<br />
    r.copy()<br />
  File &#8220;build\bdist.win32\egg\webob\__init__.py&#8221;, line 1037, in copy<br />
  File &#8220;build\bdist.win32\egg\webob\__init__.py&#8221;, line 1106, in copy_body<br />
TypeError: an integer is required<br />
&gt;&gt;&gt; r.body<br />
&#8221;<br />
&gt;&gt;&gt; r.body = r.body<br />
&gt;&gt;&gt; r.copy()</p>
<p>&#8220;пропатчить&#8221; можно на лету вот так:<br />
&#8230;.<br />
req.body = req.body<br />
for part in parts:<br />
    subreq = req.copy()<br />
    subreq.remove_conditional_<br />
    &#8230;..</p>
<p>2) bodies никуда не привязан</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Сергей Щетинин</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-43452</link>
		<dc:creator>Сергей Щетинин</dc:creator>
		<pubDate>Thu, 13 Nov 2008 08:59:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-43452</guid>
		<description>Ваш вариант проще в реализации, а мой проще в использовании. Я предпочитаю последнее.</description>
		<content:encoded><![CDATA[<p>Ваш вариант проще в реализации, а мой проще в использовании. Я предпочитаю последнее.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Андрей</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-43431</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Thu, 13 Nov 2008 07:36:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-43431</guid>
		<description>а можно и так:
&lt;pre&gt;&lt;code&gt;
def class_webob_wrap(func):
    def wrapped(self, environ, start_response):
        req = Request(environ)
        try:
            app = func(self, req)
        except HTTPException, app:
            pass
        if app is None:
            app = HTTPNotFound()
        return app(environ, start_response)
    return wrapped
&lt;/code&gt;&lt;/pre&gt;

конечно не так универслаьно, но зато проще</description>
		<content:encoded><![CDATA[<p>а можно и так:</p>
<pre><code>
def class_webob_wrap(func):
    def wrapped(self, environ, start_response):
        req = Request(environ)
        try:
            app = func(self, req)
        except HTTPException, app:
            pass
        if app is None:
            app = HTTPNotFound()
        return app(environ, start_response)
    return wrapped
</code></pre>
<p>конечно не так универслаьно, но зато проще</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Сергей Щетинин</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-43187</link>
		<dc:creator>Сергей Щетинин</dc:creator>
		<pubDate>Wed, 12 Nov 2008 16:31:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-43187</guid>
		<description>Надо же, кто-то заметил =) Текущая версия декораторов &lt;a href=&quot;http://trac.pythonpaste.org/pythonpaste/browser/Paste/WebOb/contrib/decorators.py&quot; rel=&quot;nofollow&quot;&gt;доступна в WebOb/contrib/decorators.py&lt;/a&gt; (&lt;a href=&quot;http://svn.pythonpaste.org/Paste/WebOb/contrib/decorators.py&quot;&gt;svn&lt;/a&gt;). Там же доки и тесты.

Почему и как это работает &lt;a href=&quot;http://blog.ianbicking.org/2008/10/24/decorators-and-descriptors/&quot; rel=&quot;nofollow&quot;&gt;недавно писал Бикинг&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Надо же, кто-то заметил =) Текущая версия декораторов <a href="http://trac.pythonpaste.org/pythonpaste/browser/Paste/WebOb/contrib/decorators.py" rel="nofollow">доступна в WebOb/contrib/decorators.py</a> (<a href="http://svn.pythonpaste.org/Paste/WebOb/contrib/decorators.py">svn</a>). Там же доки и тесты.</p>
<p>Почему и как это работает <a href="http://blog.ianbicking.org/2008/10/24/decorators-and-descriptors/" rel="nofollow">недавно писал Бикинг</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Андрей</title>
		<link>http://www.developers.org.ua/archives/mlk/2008/07/02/python-webdev-no-frameworks-p6/#comment-43167</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Wed, 12 Nov 2008 15:00:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1374#comment-43167</guid>
		<description>декоратор @webob_wrap нужно модифицировать для работы в классе.</description>
		<content:encoded><![CDATA[<p>декоратор @webob_wrap нужно модифицировать для работы в классе.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
