WSL2とかdocker for windowsとか面倒臭くなった
windows上でlinuxを立ち上げるのは簡単になった。
しかし、実際WSL2上で作業してたらgit cloneがなぜだか失敗するだとか、docker側であけたportが、Nortonのファイアーウォールのせいか見えないだとか、本筋に至るまでのトラブルが多く、嫌になったのでデュアルブートでUbuntu 20.04を立ち上げるようにしました。ブートローダーが動くので家族からは不評。でも最近のパソコンは起動/停止が速いので、Linuxに立ち上げ直すのも全然苦じゃないです。
Related posts
vagrantでdjangoでユーザ認証
ユーザ認証して、認証後のユーザ利用まで動作できたのでまとめる。 できたけど、フレームワークが提供してくれてるがいろいろ面倒くさい。 djangoって結構自前で作る部分が多いかと思うので、フレームワークがやってくれるのか、そこは自前なの?!、とかが分からなくてしんどかった。 Djangoのユーザ認証まとめ | c-bata web とはいえユーザ認証する部分は上記サイトをまるまる参考にさせていただきました。 せいぜいurls.pyの書き方が違うくらい。 ユーザ認証を別のアプリケーションから利用するところが今回の記事のメインなんだけど、モデルを起こすところも、c-bata webさんの記事を参考にさせてもらいました。しかし、差分だけ書くと作業の流れがわかりにくいので丸々書く。 アプリケーションをこさえる。todoを残すだけのアプリ。 $ python manage.py startapp todo setting.pyのINSTALLED_APPSにtodoを追加。 +++ b/django_auth/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = ( ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘account’, + ‘todo’, ) urls.pyにルーティングを追加。 +++ b/django_auth/urls.py @@ -23,5 +23,6 @@ urlpatterns = [ url(r’^logout/$’, ‘django.contrib.auth.views.logout’, {‘template_name’: ‘account/logout.html’}), url(r’^account/’, include(‘account.urls’, namespace=’account’)), + url(r’^todo/’, include(‘todo.urls’)), ] モデルを定義。外部キーとしてdjangoのUserモデルを指定。 admin.py。 todo/urls.pyはフレームワーク生成ではなく、自分で作成。表示のみ。更新はadminからやる。 views.py。何をこんなにimportしなきゃいかんのか分かってないけど、やる。しょうがない。まだdjangoはチュートリアルと、これしか作ってないし。 テンプレートの追加。ディレクトリ構成が気持ち悪いけど、他の書き方がよく分からない。 % mkdir -p todo/templates/todo/ % touch todo/templates/todo/index.html あとはDBを更新すれば出来上がり。 % python manage.py makemigrations % python manage.py migrate 出来上がったのはこれ。ログイン後にhttp://127.0.0.1:8080/todoとかでアクセスすれば、adminで追加したメモがUser毎に表示されるハズ。 https://github.com/vottie/django_auth 苦労したのはtodoのviews.pyでどうやればUserを利用できるか、だった。 結果Userモデルをimportしてあげることで解決できた。 もう1点はListViewでどうやればログインしたUserがGETできるかだったが、ドキュメントをしらみつぶしに読んでいったらUserはRequestオブジェクトに入っていることが分かって、ListViewのselfはrequestオブジェクトを含むことが分かって解決した。 最後に今回の環境は以下。 vagrant ubuntu14.04 python 3.4.3(pyevn) django 1.8
- Author: vottie
- Category: コンピュータ
- Tags: authentication, django, python
pythonその7 正規表現
正規表現してみた。マッチオブジェクトを作成してmatch()するあたりが、rubyやperlと違ってjavaっぽい。しょうもないサンプルだけど、リンクしておく。 github それとは別に驚きの事実が。 Python 3 から、print は 命令文 ではなく、print( ) 関数に変わっているので注意 だそうです。SyntaxError: Missing parentheses in call to ‘print’ってでるけど、何のこっちゃ分からなくて困った。
pythonその3 ユニットテスト
pythonでユニットテスト。unittestという機能が標準で入ってるらしい。しかし、importとfrom x import yはどういう順序で書くのだろう?とりあえずcのincludeと同じと考えて、以下で書いてみる。 ユニットテストをこさえた時点でこんな感じになった。 calc_test.py 自作のCalcクラスのadd()は、引数としてxとyを取る。xとyは整数型を期待してるんだけど、検証は全くやってないんで、引数を検証する処理を追加して、テストケースを追加で書いたのが以下。 引数チェック追加 データ型の変換については 細かすぎて伝わりにくい、Pythonの本当の落とし穴10選(私の小岩ホッチキス)、例外のテストのやり方はPython – unittestのassertRaisesの使い方(ぼっち勉強会)を参考にさせていただきました。 さらに追加テスト。個々の値の検証はできたとして、最大値+1したらどうなるか、int型として超えちゃうから実行時例外が発生するかなと思ったけど、できちゃった…返り値のデータ型がintじゃなくてlongで帰ったんだろうか? 実行結果。
Trackbacks and Pingbacks on this post
No trackbacks.
- TrackBack URL
Comments on this post