node server.js
./manage.py runservernew WebpackDevServer(webpack(config), {
    publicPath: config.output.publicPath,
    hot: true,
    inline: true,
    historyApiFallback: true,
    headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
        "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
    }
// ...CA – это компании, выполняющие ручную проверку, того что лицо, пытающееся получить сертификат, удовлетворяет следующим двум условиям:
1. является реально существующим;
2. имеет доступ к домену, сертификат для которого оно пытается получит
FILE_UPLOAD_PERMISSIONS = 0o644
If this isn’t given or is None, you’ll get operating-system dependent behavior. On most platforms, temporary files will have a mode of 0o600, and files saved from memory will be saved using the system’s standard umask.
import React from 'react';
import ReactDOM from 'react-dom';
export default class Sidebar extends React.Component {
  createDeck(event) {
    if(event.which !== 13) return;
    var name = 'ReactDOM.findDOMNode(this.refs.add).value';
    this.props.addDeck(name);
    this.props.hideAddDeck();
  }
  addingDeck(event) {
    this.props.showAddDeck();
  }
  render() {
    let props = this.props;
    return (
      <div className="sidebar">
        <h2>All Decks</h2>
        <button onClick={e => this.addingDeck(e)}>
          New Deck
        </button>
        <ul>
          {props.decks.map((deck, i) => {
              return <li key={i}>{deck.name}</li>
            })
          }
        </ul>
        { this.props.addingDeck && <input ref='add' onKeyPress={e => this.createDeck(e)}/> }
      </div>
    );
  }
}