MH ソフトウェア&サービスでは、DDNSを使用してwebサーバを稼働させております。
ご覧いただいておりますwebページは、MHのサーバ上で稼働しており、全てがPythonで動いています。(自社開発webフレームワーク「spider」使用)
色々と試しましたが、この方法が最適です。web serverとしても、localで起動する場合も文字化けしません。
import io
import os
import sys
if type(sys.stdout) == io.TextIOWrapper:
sys.stdout = io.TextIOWrapper(
sys.stdout.buffer,
encoding="utf-8")
Qiita: html出力時の文字化け対策
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import cgi
form = cgi.FieldStorage()
all_query = '?'
for key in form:
all_query = all_query \
+ key \
+ '=' \
+ form[key].value + '&'
all_query = all_query[0:len(all_query) - 1]
print ('content-type: text/html; charset=UTF-8\n')
html_body = """\
<html><body>
<script>
window.location = '/any.py{0}';
</script>
</body></html>
""".format(all_query)
print (html_body)
Qiita: queryもredirect
ブラウザにcookieを保存する場合、下記のコードで可能です。
print (
'Set-Cookie:{0}={1}; '
'path=/; '
'expires=Fri, '
'5-May-2027 00:00:00 GMT;'.format(key, value))
実行し、他のscript実行すると、保存できません。予想ではhttpの環境が変更されるためだと思われます。
redirectすると保存できますので、cookieを保存しすぐにredirectしましょう。
Qiita: cookieを保存させる時の注意点
ファイルが存在しているか不明で、importを利用せず別module内の関数を使用したい場合があります。
アドオン的に別moduleから決まった関数を呼び出せます。下記の例は、machnery_test.pyからimp.pyををインポートして、test_func()を使用する例です。<br /><br />
machnery_test.py
from importlib import machinery
import os
filename = '{}/imp.py'.format(os.path.dirname(__file__))
loader = machinery.SourceFileLoader('filename', filename)
module = loader.load_module()
print(module.test_func())
同じフォルダ内のimp.py
def test_func():
print('Test function')
return 'Result from test_func'
出力
Test function
Result from test_func
Qiita: importする別の方法