Python 은 사이트 폼 제출 과 템 플 릿 을 실현 합 니 다.
실제 웹 사이트 에서 현재 템 플 릿 을 사용 하고 사용자 가 직접 본 페이지 에서 html 언어 로 페이지 를 써 야 합 니 다.
웹 사 이 트 를 만 드 는 업계 에 서 는 HTML+CSS+JS 로 구 성 된 웹 페이지 를'전단'이 라 고 부른다.이것 은 주로 보 여주 거나 사용자 에 게 양식 을 작성 하 게 하고 JS 를 통 해 python 으로 쓴 프로그램 에 제출 하여 python 프로그램 으로 데 이 터 를 처리 하 게 합 니 다.데 이 터 를 처리 하 는 python 프로그램 을'백 엔 드'라 고 합 니 다.나 는 항상'백 엔 드'를 하 라 고 일 깨 워 주 며'전단'을 경시 하지 말 라 고 한다.스 택 엔지니어 가 되 겠 다 는 뜻 을 세우 면 예전 부터 끝까지 통 해 야 한다.
이 강 의 는 템 플 릿(HTML)으로 폼 을 작성 한 다음 백 엔 드 에 제출 하 는 python 프로그램 을 보 여 주 고 다른 디 스 플레이 의 전단 페이지 로 이동 합 니 다.절 차 를 간소화 하기 위해 이 과정 에서 데이터 처리 와 CSS+Javascript 작업 이 없 으 면 모든 인터페이스 가 추 할 수 있 습 니 다.
양식 하나
전단 페이지 를 만 들 려 면 다음 그림 과 같은 내용 을 표시 합 니 다.
해당 코드 는 index.html 이 라 고 명명 되 어 있 으 며,template 라 는 디 렉 터 리 에 존재 합 니 다.
<!DOCTYPE html>
<html>
<head>
<title>sign in your name</title>
</head>
<body>
<h2>Please sign in.</h2>
<form method="post" action="/user">
<p>Name:<br><input type="text" name="username"></p>
<p>Email:<br><input type="text" name="email"></p>
<p>Website:<br><input type="text" name="website"></p>
<p>Language:<br><input type="text" name="language"></p>
<input type="submit" value="ok,submit my information">
</form>
</body>
</html>
위의 코드 는 비교적 간단 합 니 다.html 에 익숙 하 다 면 익숙 하지 않 아 도 괜 찮 습 니 다.인터넷 검색 을 통 해 이해 할 수 있 습 니 다.CSS+JS 가 없 기 때문에 간단 합 니 다.만약 진정한 개발 에서 이 두 가 지 는 없어 서 는 안 된다.이 양식 이 있 으 면 사용자 가 관련 정 보 를 모두 작성 하면 됩 니 다.아래 단 추 를 누 르 면 백 엔 드 에 제출 한 python 프로그램 에서 처리 해 야 합 니 다.
백 엔 드 프로세서
tornado 로 구동 되 는 사이트 로 서 먼저 앞의 index.html 를 표시 할 수 있어 야 합 니 다.이것 은 보통 get 방법 으로 표시 되 는 스타일 은 위의 모양 에 따라 표 시 됩 니 다.
사용자 가 정 보 를 작성 한 후 단 추 를 누 르 면 제출 합 니 다.위의 코드 폼 을 살 펴 보고 post 방법 을 설정 하 였 으 므 로 python 프로그램 에 서 는 제출 한 데 이 터 를 받 은 후 제출 한 데 이 터 를 다른 웹 페이지 에 표시 하 는 post 방법 이 있어 야 합 니 다.
폼 에 action=/user 가 있 습 니 다.폼 의 내용 을/user 경로 에 대응 하 는 프로그램 에 제출 하 는 것 을 의미 합 니 다.여기 서 설명 해 야 할 것 은 사이트 에서 데이터 제출 과 표시,경로 가 매우 중요 하 다 는 것 이다.
이상 의 의도 에 따라 다음 코드 를 작성 하고 usercontroller.py 라 고 명명 하여 template 디 렉 터 리 에 저장 합 니 다.
#!/usr/bin/env python
#coding:utf-8
import os.path
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class UserHandler(tornado.web.RequestHandler):
def post(self):
user_name = self.get_argument("username")
user_email = self.get_argument("email")
user_website = self.get_argument("website")
user_language = self.get_argument("language")
self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)
handlers = [
(r"/", IndexHandler),
(r"/user", UserHandler)
]
template_path = os.path.join(os.path.dirname(__file__),"template")
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers, template_path)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
이번 에는 코드 양 이 좀 많다.그러나 대부분 앞에서 tornado 의 기본 구 조 를 이야기 할 때 이미 말 했 습 니 다.앞에서 말 했 듯 이 여 기 는 중점 적 인 것 과 새로 나 온 것 만 이야기 하고 어떤 내용 에 대해 의문 이 있다 면 앞의 관련 장 을 참고 하 세 요.도 입 된 모듈 에 하나
import os.path
가 더 생 겼 는데 이 모듈 은 주로 다음 과 같다.
template_path = os.path.join(os.path.dirname(__file),"template")
이것 은 저장 프로그램의 디 렉 터 리template
를 가 져 오 는 경로 입 니 다.두 가지 유형 에 모두 있 는 것
self.render()
을 중점적으로 보고 이 방법 으로 해당 하 는 템 플 릿 을 도입 한다.
self.render("index.html")
index.html 템 플 릿 을 표시 합 니 다.그러나 이 때 템 플 릿 페이지 에 데 이 터 를 전달 하지 않 고 표시 할 뿐 입 니 다.다음:
self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)
이전 과 달리 템 플 릿 웹 페이지 user.html 뿐만 아니 라 이 웹 페이지 에 도 데 이 터 를 전달 해 야 합 니 다.예 를 들 어 username=username,템 플 릿 에 있 는 한 곳 은 username 으로 표 시 된 데이터 이 고 username 은 이 방법의 변수 입 니 다.즉,데이터 에 대응 하 는 것 입 니 다.그러면 템 플 릿 의 username 도 user 에 대응 합 니 다.name 의 데이터,이것 은 username=user 를 통 해name 완성.뒤의 변 수 는 같다.그럼 username 데 이 터 는 어디서 났 습 니까?index.html 페이지 의 양식 에 제출 된 것 입 니 다.경 로 를 관찰 하 는 설정 에 주의 하 세 요.
r"/user"
,UserHandler
,즉 form 에 있 는action='/user'
데 이 터 를 UserHandler 에 제출 하고 post 방법 을 통 해 처리 하 는 것 입 니 다.그래서 User Handler 류 에 서 는 post()방법 으로 이 문 제 를 처리 합 니 다.self.get 통과 하기argument()는 전단 에서 제출 한 데 이 터 를 받 습 니 다.수신 방법 은 self.get 입 니 다.argument()의 매개 변 수 는 index.html 폼 form 의 각 name 값 과 같 으 면 해당 하 는 데 이 터 를 얻 을 수 있 습 니 다.예 를 들 어user_name = self.get_argument("username")
index.html 폼 에서 name 이'username'인 요소 의 값 을 얻 고 user 에 부여 할 수 있 습 니 다.name 변수.아직 홈 페이지 가 하나 모자 란 다.
결과 보이 기
위의 코드 에 템 플 릿 이 하나 더 생 겼 습 니 다.
user.html
이 템 플 릿 에 대해 앞의 템 플 릿 과 조금 다른 점 이 있 습 니 다.바로 변 수 를 도입 하 는 것 입 니 다.그것 의 코드 는 다음 과 같다.
<!DOCTYPE html>
<html>
<head>
<title>sign in your name</title>
</head>
<body>
<h2>Your Information</h2>
<p>Your name is {{username}}</p>
<p>Your email is {{email}}</p>
<p>Your website is {{website}}, it is very good. This website is make by {{language}}</p>
</body>
</html>
위의 코드 와 이 말 을 대조 하 십시오.
self.render("user.html",username=user_name,email=user_email,website=user_website,language=user_language)
위의 템 플 릿 코드 는 user.html 라 는 파일 을 저장 하고 앞 에 저 장 된 것 과 같은 디 렉 터 리 에 저 장 됩 니 다.HTML 템 플 릿 코드 를 보면 유사 한
{{username}}
변수 가 있 습 니 다.템 플 릿 에{{}}
변 수 를 도입 합 니 다.이 변 수 는self.render()
에서 규정 한 것 입 니 다.이들 변 수 는 이름 이 일치 하고 해당 하 는 값 대상 을 템 플 릿 에 도입 해 야 합 니 다.실행 결과
template 디 렉 터 리 에 들 어가 서 실행:
~/template$ python userscontroller.py
그리고 브 라 우 저의 주소 표시 줄 에 입력 하 십시오.http://localhost:8000
아래 그림 과 같은 양식 이 나타 나 고 양식 내용 을 작성 합 니 다.
"버튼"을 누 르 면:
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.