2023年11月19日日曜日
githubめも
2023年10月6日金曜日
Django の基本
日本語化
作成したプロジェクト内の「settings.py」の次の2箇所を変更する
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
settings.py
アプリ作成後には、アプリ名(自分の場合は、classApp)を登録
urls.pyを編集
作成したプロジェクトとアプリ ディレクトリの urls.pyを編集する
アプリ ディレクトリは新規作成します。
path('アプリ名/', include)
python manage.py makemigrations アプリ名
python manage.py migrate
アプリ名を間違えたか、「settings.py」のINSTALLED_APPSにアプリ名が追加されていない。
アプリ名を間違えると
python manage.py makemigrations clasApp
No installed app with label 'clasApp'.
正常の場合
python manage.py makemigrations classApp
Migrations for 'classApp':
classApp\migrations\0001_initial.py
- Create model MemoModel
再度、実行するとファイル変更されていないので…
python manage.py makemigrations classApp
No changes detected in app 'classApp'
以上で準備が完了!
2023年8月20日日曜日
FlaskでSocket.IOでなくWebSocketを使うには
ソースだけです
サーバー側
from flask import Flask
from flask_sockets import Sockets
from flask import render_template
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
from werkzeug.routing import Rule
app = Flask(__name__)
sockets = Sockets(app)
# @sockets.route('/c2', websocket= True )
def echo_socket(ws):
#breakpoint()
print("kimasita")
while not ws.closed:
message = ws.receive()
if message != None:
ws.send(message)
sockets.url_map.add(Rule('/c2', endpoint=echo_socket, websocket=True))
@app.route('/')
def hello():
#return 'Hello World!'
return render_template("index.html")
if __name__ == "__main__":
server = pywsgi.WSGIServer(('', 8001), app, handler_class=WebSocketHandler)
server.serve_forever()
ブラウザ側
<html>
<head>
<title>gevent websocket test</title>
</head>
<body>
<h1>test</h1>
<div>
<input name="send_input" id="send_input" />
<input type="button" value="push" onclick="send_data()" />
</div>
<div>
<textarea id="view"></textarea>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var ws = new WebSocket("ws://ik1-446-55369.vs.sakura.ne.jp:8001/c2");
ws.onmessage = function(e) {
$("#view").html($("#view").val() + e.data + "\n");
};
function send_data() {
//ws.send( "abcdefg");
ws.send($("#send_input").val());
};
</script>
</body>
</html>
2023年2月26日日曜日
HPでソースコードのファイルをクリックして表示
ホームページディレクトリを作成
その中にソースファイルを複数おいて、クリックして閲覧できるようにする。
HPでは、フォルダにindex.htmlが無いとフォルダのファイル一覧を表示します。
今回は、一覧を見やすく事と、正しくエンコードされて見れることに挑戦しましたよ!
通常は次のように表示されます
それを次のような表示に改善します!!!
ファルダに「.htaccess」を作成してカスタマイズするとかなり便利なことが判明しました。
設定したファイル内容
removeHandler cgi-script .cgi .pl .py .rb
IndexIgnore .. __* *.html *.txt
HeaderName ./autoindex_head.html
ReadmeName ./autoindex_end.txt
IndexOptions SuppressHTMLPreamble
#IndexOptions FancyIndexing HTMLTable
IndexOptions FancyIndexing
IndexOptions NameWidth=*
autoindex_head.html
<html>
<head>
<title>abcdefg</title>
</head>
<body>
<h1>ファイル一覧</h1>
<p>ファイル内容の表示は、
ファイルをクリックして下さい
</p>
<script></script>
フォルダの内容は次のような感じで、HPで「src」をクリックすると「src」フォルダにはindex.htmlがないのでファイル一覧をApacheは表示してくれますね
.htaccessに次の設定を書くだけでも問題はないけね
このフォルダの上位「/book以下」では、CGIが起動できる設定にしまったので
最初の一行「removeHandler 」は必要になってしまいました。
removeHandler cgi-script .cgi .pl .py .rb
AddCharset UTF-8 .py
IndexIgnore .. __* *.html *.txt
mydbg.pyをクリックすると文字化しなく表示されました
ubuntu CGI でエラーの対応(UnicodeEncodeError:ascii' codec can't encode character)
次のソースコード(UTF-8で保存済み)でエラー発生
#!/usr/bin/python3
print("Content-Type: text/html; charset=utf-8\n")
print("あ")
Traceback (most recent call last):
File "/var/www/~ loginMain2.py", line 68, in <module>
print("\\u3042")
UnicodeEncodeError: 'ascii' codec can't encode character '\\u3042' in position 0: ordinal not in range(128)
修正方法
# micro /etc/apache2/apache2.conf
環境変数「LC_CTYPE 」をUTF-8にします。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
SetEnv LC_CTYPE C.UTF-8
</Directory>
解決策まとめ
ubuntu起動方法 version( /etc/issue), service apache2 start
# cat /etc/issue
Ubuntu 14.04.6 LTS
# service apache2 stop
* Stopping web server apache2
# service apache2 start
* Starting web server apache2