2014-04-15 5 views
2

나는 나무 딸기 파이를 사용하여 내 arduino를위한 간단한 웹 인터페이스를 만들려고합니다. html로 만든 링크를 클릭하여 "on"문자열을 파이썬 프로그램에 보내서 arduino가 켜지도록 할 수 있습니다. 여기 여기 내 파이썬 코드Python Flask의 링크에서 정보 얻기

import serial 
from flask import Flask, render_template, request 
import datetime 
app = Flask(__name__) 
ser = serial.Serial('/dev/ttyACM0', 9600) 

@app.route("/<action>") 
def action(action): 
    print action 
    #command = "" 
    #while command != "done": 
    #  command = raw_input("what do you want? ") 
    if action == "on": 
      ser.write('1') 
    elif action == "off": 
      ser.write('0') 
    return render_template('index.html', **templateData) 

@app.route("/") 
def display(): 
    now = datetime.datetime.now() 
    timeString = now.strftime("%Y-%m-%d %H:%M") 
    templateData = { 
      'title' : 'arduino', 
      'time' : timeString 
    } 
    return render_template('index.html', **templateData) 

if __name__ == "__main__": 
    app.run(host='0.0.0.0', port=8080, debug=True) 

그리고 나의 html 코드의

<!DOCTYPE html> 
    <head> 
      <title>{{title}}</title> 
    </head> 
    <body> 
      <p>The time at server is {{time}}</p> 
      <p> 
       The LED is currently off (<a href="/on">turn on</a>) 
      </p> 
    <body> 
</html> 

누군가가 내가 거기까지 갈 수 있도록 액션 메소드로 전송하기에 문자열을 원하는 링크 turn on를 클릭하면 . 대신 그게 무슨 뜻입니까 /on 디렉토리로 이동합니다. 나는 도처에서 보았고 이것을 수행하는 방법을 찾을 수 없습니다. 이것은 처음으로 플라스크를 사용하여 처음으로 파이썬에 상당히 익숙해 져 있기 때문에 완전히 지워 버리면 너무 가혹하지 마십시오.

+1

을 한 후 그냥 리디렉션 할 수 그것을 의지하는 노선은'/ on' 두 개의 경로를 가지고, 거기 현재있는'/'와'/ ' . '/ action' 경로를'/ on'으로 변경할 수는 있지만 문자열을 전달하고자한다면'form'을 사용하고 제출하십시오. –

+0

또한 첫 번째 경로를'/ , methods = [ "GET", "POST"]로 변경해야합니다. –

+0

링크에서 문자열을 가져 와서 보낼 수있는 방법이 없습니까? – user2197126

답변

1

당신이 행동 실제로

from flask import Flask, render_template, request, redirect 

@app.route("/<action>") 
def action(action): 
    ... 
    return redirect(url_for('display')) 
+0

좋아, 내 문제가 해결 됐어. 그러나,'return redirect (url_for ('display'))'가 작동하지 않아서 디스플레이 메소드에서 코드를 다시 만들어야했습니다. 얼마나 정확하게 url_for를 사용하여 표시 메소드의 html을 표시 할 수 있습니까? – user2197126

+0

url_for는 지정된 메소드로 리디렉션됩니다. 따라서이 경우 url_for -> display()로 리디렉션됩니다. URL은 경로 데코레이터에 있으며,이 경우 '/'입니다. 플라스크에서 가져온 Flask, render_template, request, redirect' 부분을 추가했는지 확인하십시오 ('redirect'는 여분입니다) –