기본적인 프로그래밍 파이썬 : 파이썬은 웹 페이지 끝 책 디스플레이를 구현하기 위해 토네이도 프레임 워크를 사용

토네이도는 우리가 하나가 명확 토네이도 템플릿의 과정을 실행하고 예를 통해 전체 웹 프로그램을 사용하는 방법을 배우게 할 수있는 책의 끝을 보여주는 웹 페이지의 인스턴스를 달성하기 위해 토네이도 파이썬 프레임 워크의 사용을 보여주기 위해 여기에, 파이썬 웹 개발 프레임 워크의 높은 인기입니다 .
: 우선, 왜 토네이도 선택
등 gevent, 트위스트, libevent, 옳은 일이 될 수있는, 1. 고성능 네트워크 라이브러리를.
특히 curlhttpclient이를 바탕으로, HttpClient를,에 tcpserver를 제공, 비동기 IO 시간 제한 이벤트 처리에 대한 지원을 제공합니다
확실히 기존 HTTP 클라이언트에서 1 위를 차지. 그것은 파충류 사용할 수 있습니다, 게임 서버는, 내 지식 산업은 게임 서버로 토네이도를 사용하고있다

장고 수 2.web 프레임 워크, 플라스크 오른쪽.
그것은 라우팅, 템플릿 및 다른 웹 프레임 워크의 전제 조건을 제공합니다. 다른 차이점은 토네이도 비동기 맞는다 긴 회전 있다는
토네이도 프렌드 발명 이유 현재 플라스크가 지원 될 수 있지만, gevent 등의 도움을 필요

3. 더 완전한 HTTP 서버,이 수 및 nginx를 아파치 대비,
하지만, 그렇게 HTTP1.0 사용합니까 지원 nginx를 앞쪽뿐만 아니라 멀티 코어를보다 효율적으로 사용하는 데뿐만 아니라 지원 허용에 HTTP1.1

gunicore 수 4. 전체 WSGI 서버, gevent WSGI 서버는 비교를 수행하는,
토네이도 가속 플라스크를하자, 플라스크 토네이도에서 실행할 수 있도록 말을하는 것입니다

HTML5 게임의 편의를 제공하게 완전한 웹 소켓 지원을 제공한다 (5).
우리가 사용한 웹 소켓입니다 회전에 거의 오래 알고 있지만, 웹 소켓 전화 지원이 매우 좋지 않다
전에 시간 제한 아약스를 사용하는 많은 수의 요청을 보낼 수 있었다 시간이 빠르게 모바일 브라우저를 잡을 것으로 예상

사용이 간단한 페이지 책을 소개하고 만드는 토네이도
, 본론, 음을이 책에서의 모습 실현의 코드 페이지에 대해 설명하자 :
1. 웹 서비스 항목 파일 blockmain.py 만들기를

#coding:utf-8
import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.options
import os.path
import json
import urllib2
 
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
 
class MainHandler(tornado.web.RequestHandler):
  def get(self):
    self.render(
      "index.html",
      page_title = "Burt's Books ¦ Home",
      header_text = "Welcome to Burt's Books!",
      books = ['细说php','python','PHP','小时代']
    )
 
 
class HelloModule(tornado.web.UIModule):
  def render(self):
    return'<h1>I am yyx and this is an information from module hello!</h1>'
 
class BookModule(tornado.web.UIModule):
  def render(self,bookname):
    doubanapi = r'https://api.douban.com/v2/book/'
    searchapi = r'https://api.douban.com/v2/book/search?q='
    searchurl = searchapi+bookname
    searchresult = urllib2.urlopen(searchurl).read()
    bookid = json.loads(searchresult)['books'][0]['id']
    bookurl = doubanapi+bookid
    injson = urllib2.urlopen(bookurl).read()
    bookinfo = json.loads(injson)
    return self.render_string('modules/book.html',book = bookinfo)
 
  def embedded_javascript(self):
    return "document.write(\"hi!\")"
 
  def embedded_css(self):
    return '''.book {background-color:#F5F5F5}
         .book_body{color:red}
    '''
 
  def html_body(self):
    return '<script>document.write("Hello!")</script>'
 
if __name__ == "__main__":
  tornado.options.parse_command_line()
  app = tornado.web.Application(
    handlers = [
      (r'/',MainHandler),
 
    ],
    template_path = os.path.join(os.path.dirname(__file__),'templates'),
    static_path = os.path.join(os.path.dirname(__file__),'static'),
    debug = True,
    ui_modules={'Hello':HelloModule,'Book':BookModule}
 
 
    )
  http_server = tornado.httpserver.HTTPServer(app)
  http_server.listen(options.port)
  tornado.ioloop.IOLoop.instance().start()

: MVC의 기본 개념 중 일부를 설명
등 I와 같은 모드의 다양한 적절한 클래스 클래스 일치를 설정하여 처리하는 적절한 핸들러를, 패턴이 매개 변수를 얻기 위해 사용자의 입력에 의해 일치의 PathInfo 토네이도를하고 전화 이는 클래스 MainHandler에서 처리하여 요청 / 얻을
MainHandler 통화 파라미터 {{}에서 index.html을 렌더링 요청 파라미터 index.html을 렌더링

적절한 템플릿을 설정 2. 템플릿 디렉토리를 만들고, 템플릿 기반 부모 main.html을 만들 아래 main.html을 작성,이 템플릿은 가장 기본적인 웹 사이트 프레임 워크, 그것은로부터 상속있는 특정 내용을 정의 서브 클래스 내재

<html>
<head>
  <title>{{ page_title }}</title>
  <link rel="stylesheet" href="{{ static_url("css/style.css") }}" />
</head>
<body>
  <div id="container">
    <header>
      {% block header %}<h1>Burt's Books</h1>{% end %}
    </header>
    <div id="main">
      <div id="content">
        {% block body %}{% end %}
      </div>
    </div>
    <footer>
      {% set mailLink = '<a href="mailto:[email protected]">Contact Us</a>' %}
      {% set script = '<script>alert("hello")</script>' %}
      {% block footer %}
 
        <p>
          For more information about our selection, hours or events, please email us at{% raw mailLink %}
 
          <!-- {% raw script %} 这里将原样输出,也就是会弹一个框-->
        </p>
      {% end %}
    </footer>
  </div>
  <script src="{{ static_url("js/script.js") }}"></script>
  </body>
</html>

여기서 메인 프레임의 정의에있어서, 상기 내측 {% 블록 헤더는 %이다}

버트의 책

{% 엔드 %}는 서브 클래스 상속 블록 (블록), 서브 클래스 상속이 main.html에 대한 템플릿, 그것은 기본 상위 클래스를 구현하지 않을 경우이 블록은, 서브 클래스에 의해 구현되는 쓰기 구체적으로 무엇을 값 경우 어디

버트의 책

, MainHandler 클래스는 부모 클래스를 상속하는 index.html을 index.html을, 그 다음 쓰기를 렌더링하는 것입니다

{% extends "main.html" %}
 
{% block header %}
  <h1>{{ header_text }}</h1>
{% end %}
 
{% block body %}
  <div id="hello">
    <p>Welcome to Burt's Books!</p>
    {% module Hello() %}
 
    {% for book in books %}
      {% module Book(book) %}
    {% end %}
    <p>...</p>
  </div>
{% end %}

또한 상속의 장점을 사용하는 간단한 간단한 바, 차단할 수 있습니다 부모 클래스의 내용의 실현 한, 쓰기 뭔가 부모 클래스를 반복하지 않는
매개 변수를 방법을 렌더링의 MainHandler 클래스를

page_title = "Burt's Books | Home",
header_text = "Welcome to Burt's Books!",
books = ['细说php','python','PHP','小时代']

여기에 매개 변수로 전송됩니다
템플릿 토네이도의 파이썬 코드를 사용할 수있다, 플러스 경우 {%} %가 사용하는 경우 {%} % 엔드의 끝에 다른를 사용하는 동안위한
코드 {% 모듈 도서 (책) % } 정의 된 서비스 항목 및 파일 '도서'모듈 해당 호출
{: HelloModule '안녕하세요'ui_modules을 = BookModule : '도서'} BookModule이 BookModule의 위의 정의를 참조한다

class BookModule(tornado.web.UIModule):
  def render(self,bookname):
    doubanapi = r'https://api.douban.com/v2/book/'
    searchapi = r'https://api.douban.com/v2/book/search?q='
    searchurl = searchapi+bookname
    searchresult = urllib2.urlopen(searchurl).read()
    bookid = json.loads(searchresult)['books'][0]['id']
    bookurl = doubanapi+bookid
    injson = urllib2.urlopen(bookurl).read()
    bookinfo = json.loads(injson)
    return self.render_string('modules/book.html',book = bookinfo)

BookModule은 단순히에 대한 검색 키워드를 포함 문의 먼저 물냉이 책의 API를 사용하여 여기입니다 렌더링하는 템플릿에 객체를 넣어 마지막 render_string에게 () 메서드를 UI 모듈이다 사용 tornado.web.UIModule로부터 상속 도서 정보는 해당 템플릿이 특정 도서 정보를 렌더링, 다음 책에 대한 쿼리 특정 정보에 책 API를 사용하여, 첫 번째 책 ID를 반환
템플릿 디렉토리에 모듈 디렉토리를 생성 한 후 다음 book.html를 만들 여기에 특정 책의 프레임 워크의 내용이 표시 될 것입니다

<div class="book">
  <h3 class="book_title">{{ book["title"] }}</h3>
  <a href="{{book['alt']}}" target="_blank"><p>点击查看详情</p></a>
  {% if book["subtitle"] != "" %}
    <h4 class="book_subtitle">{{ book["subtitle"] }}</h4>
  {% end %}
  <img src="{{ book["images"]["large"] }}" class="book_image"/>
  <div class="book_details">
    <div class="book_date_released">Released: {{ book["pubdate"]}}</div>    
    <h5>Description:</h5>
    <div class="book_body">{% raw book["summary"] %}</div>
  </div>
</div>

마지막 디렉토리 구조는 다음과 같이한다

├── blockmain.py
└── templates
  ├── index.html
  ├── main.html
  └── modules
    └── book.html

이 절차는 수행된다 :
첫번째는 '/'에 MainHandler index.html을 ----> index.html을 main.html에서 상속 ----> {% 모듈 index.html을 예약 접속 경로의 유형 (책으로 사용 ) %} ui_modules 해당 도서의 blockmain.py 차례를 찾기 ----> 책 콘텐츠 그래서 전체 내용이 전혀 제시 넣어 ui_modules 모듈에 book.html 할 것입니다 결과 쿼리를 렌더링 HTTP를 통해 서비스를 시작 blockmain.py 파이썬으로 ...... 앞을 : // localhost를 : 8000 얻으려면 다음 웹 사이트에 액세스하는 데 그림 삽입 설명 여기
매우 넓은 파이썬 학습 자원 수집을 추천 마지막, [입력 클릭] 내가 전에이 모이는, 체험 학습 펜을 학습

거기에 기업의 경험 명멸하는 빛이며, 실제 프로젝트 데이터를 기준으로 제로로 진정 기억, 우리가 할 수 또한 메시지가 아닌 아래

제안 된 이해, 우리는 진전을 함께 공부합니다

게시 60 개 원래 기사 · 원 찬양 25 ·은 80000 +를 볼

추천

출처blog.csdn.net/haoxun11/article/details/105169587