やりたいこと
特定のURLにルーティング後、ルートディレクトリ直下のフォルダからpdfを開きたいと考えています。
【理想】このようにルートディレクトリ下のフォルダから直接開きたいのですが、
http://127.0.0.1/pdffolder/20210318.pdf
【現状】ルーティングのURLからこのようにパスが作られてしまいます。
http://127.0.0.1/routing/pdffolder/20210318.pdf
記述の仕方を教えていただければ幸いです。
環境
python 3.7
windows10
flask
ソースコード
次の通り記述しています。
python3
1from pathlib import Path 2 3folder = "pdfs" 4word = "searchword" 5 6pdffolder = Path(folder) 7pdf_name = list(pdffolder.glob("*" + word + "*"))[0] 8pdf_name_str = pdf_name.as_posix() 9 10# pdf_name_strをテンプレに渡してます。 11 12print(pdf_name) 13# pdffolder/word.pdf 14
os.chdir()の処理を入れてルートディレクトリに移動を試みたりもしたのですが
思うような結果にはつながりませんでした。
アドバイス等、どうぞよろしくお願いいたします。
URL のパスとファイルシステムのパスは別なので、どう対応づけるかの問題です。
https://qiita.com/5zm/items/db6acb96594e0ff7c549
ご回答ありがとうございます。
ご教示の通り、staticの階層に移動させたpdfにアクセスできることを確認しました。
その上で、
app = Flask(__name__,static_url_path="")
と指定して
"http://127.0.0.1:5000/pdf_name.pdf"としてアクセスできるようにしたいのですが、
その場合、テンプレート側の記述を
<a href="{{pdf_name}}">link</a>
とすると、やはり
"http://127.0.0.1:5000/routing/pdf_name.pdf"となります。
テンプレ側で
<a href="http://127.0.0.1:5000/{{pdf_name}}">link</a>
と記述すれば回避できるのですが、できればホスト名は記述したくありません。
何か工夫できることはあればヒントをいただけないでしょうか?
ルートパス (ルート相対パス) を使えば良いのでは。
https://qiita.com/49497974m/items/919985f3a6f6a6b19ee8
思った通りのパスを作ることが出来ました。
どうもありがとうございました。
大変勉強になりました。