<p>可以使用<a href="http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/subrequest.html" rel="nofollow">^{<cd1>}</a>调用视图:</p>
<blockquote>
<pre><code>from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.request import Request
def view_one(request):
subreq = Request.blank('/view_two')
response = request.invoke_subrequest(subreq)
return response
def view_two(request):
request.response.body = 'This came from view_two'
return request.response
if __name__ == '__main__':
config = Configurator()
config.add_route('one', '/view_one')
config.add_route('two', '/view_two')
config.add_view(view_one, route_name='one')
config.add_view(view_two, route_name='two')
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()`
</code></pre>
<p>When <code>/view_one</code> is visted in a browser, the text printed in the
browser pane will be "This came from view_two". The <code>view_one</code> view
used the <code>pyramid.request.Request.invoke_subrequest()</code> API to obtain a
response from another view (<code>view_two</code>) within the same application
when it executed. It did so by constructing a new request that had a
URL that it knew would match the <code>view_two</code> view registration, and
passed that new request along to
<code>pyramid.request.Request.invoke_subrequest()</code>. The <code>view_two</code> view
callable was invoked, and it returned a response. The <code>view_one</code> view
callable then simply returned the response it obtained from the
<code>view_two</code> view callable.</p>
</blockquote>