マークダウンノートを操作するためのWebアプリケーション



長い間、さまざまなトピックに関するさまざまなメモ、ヒント、チートシートを蓄積してきました。 便利で構造化されたストアが必要でした。



さまざまなwikiエンジンを試しましたが、それらについて気に入ったすべてではありませんでした。機能が十分でない場合や、多すぎることがありました。 あなたがうまくやるなら、自分でやるなら、自転車を書く必要があると思いました。



私は長い間PythonでWebアプリケーションを書きたいと思っていたので、この言語を選択しました。 猫の下には、ソースコードと説明、およびリポジトリへのリンクがあります。



このアプリケーションの本質は次のとおりです:mdファイルを含むディレクトリがあり、ファイルがtest.mdと呼ばれる場合、これらは書き込みに便利であり、このアプリケーションに加えて使用するのが便利です。localhost:8000 /このファイルの内容はHTMLディスプレイで開きます。



最初に、ginjiの表示テンプレートを作成します。



<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='normalize.css') }}"> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='codehilite.css') }}"> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <table> <tr> <td valign="top" class="side"> <h1 class="logo"> <a href="/">{{ title }}</a> </h1> {{ side|safe }} </td> <td valign="top"> {{ content|safe }} </td> </tr> </table> </body> </html>
      
      





これは非常にシンプルで、テーブルを使用してメインメニューからサイドメニューを分離します。



次に、構成ファイルを作成する必要があります。



 #   [app_setting] #   start_page=start #    side_bar=sidebar #   md  pages_folder=pages #     port=8000 #     not_found_text=    #   main_title=
      
      





そしてそれを解析します:



 class ConfigProvider: config_file_name = 'config.ini' start_page = 'start' side_bar = 'sidebar' pages_folder = 'pages' port = '8080' not_found_text = 'Page Not Found' main_title = u' ' def __init__(self): #      if function.check_found_file(self.config_file_name): config = ConfigParser.RawConfigParser() config.read(self.config_file_name) #     self.start_page = config.get('app_setting', 'start_page').decode('utf8') self.side_bar = config.get('app_setting', 'side_bar').decode('utf8') self.pages_folder = config.get('app_setting', 'pages_folder').decode('utf8') self.port = config.getint('app_setting', 'port') self.not_found_text = config.get('app_setting', 'not_found_text').decode('utf8') self.main_title = config.get('app_setting', 'main_title').decode('utf8')
      
      







コードの最後のブロックで使用されるcheck_found_file()は、要求されたファイルが存在するかどうかを示します。



 def check_found_file(filename): """    """ try: file = open(filename) except IOError as e: return False else: with file: return True
      
      







このアプリケーションで最も重要な機能は、markdownからhtmlへの変換です。



 def markdown_to_html(filename): """  markdown   html  """ f = open(config.pages_folder + '/' + filename + '.md', 'r') all_file = '' for st in f.readlines(): all_file += st html = markdown.markdown(all_file.decode('utf8'), extensions=['codehilite']) return html
      
      







これで、ページのコンテンツを取得できます。



 #    def get_page(name): #    if function.check_found_file(config.pages_folder + '/' + name + '.md'): page = function.markdown_to_html(name) else: page = config.not_found_text return page
      
      







ブラウザに表示する

 @app.route('/') def hello(): return render_template( 'page.html', title=config.main_title, side=get_page(config.side_bar), content=get_page(config.start_page) ) @app.route('/<name>') def page(name): return render_template( 'page.html', title=config.main_title, side=get_page(config.side_bar), content=get_page(name) ) if __name__ == '__main__': app.run(port=config.port)
      
      







以上です。 ノートはお気に入りのエディターで作成および編集され、ブラウザーで読み取られます。



クラウドサービスを使用して、これらすべてをデバイス間で同期できます。



このアプリケーションが、メモやメモを整理し、多分pythonのようなすばらしい言語と出会い、友達を作るのに役立つことを願っています。



便利なリンク



GitHubプロジェクトリポジトリ

構文マークダウン(ホワイトペーパー)

構文マークダウン(ロシア語の記事)

フラスコの公式ウェブサイト



All Articles