WordPressはデフォルトでマークダウンで書ける?
aaaa
aaaa
aaaaa
aaaaaa
aaaaa
どうも#2個から書けるらしい。
どうも#2個から書けるらしい。
windows上でlinuxを立ち上げるのは簡単になった。
しかし、実際WSL2上で作業してたらgit cloneがなぜだか失敗するだとか、docker側であけたportが、Nortonのファイアーウォールのせいか見えないだとか、本筋に至るまでのトラブルが多く、嫌になったのでデュアルブートでUbuntu 20.04を立ち上げるようにしました。ブートローダーが動くので家族からは不評。でも最近のパソコンは起動/停止が速いので、Linuxに立ち上げ直すのも全然苦じゃないです。
プラグインをいろいろ入れてるせいか、何か書こうと思うと入力項目が多すぎて書くのがおっくう。
特にスマホからだと苦痛。。。
ムダは省いて気軽にログを残せるようにしたいと思います。
ubuntuのLTS 18.04が出たので、OS入れ替えたのが約1ヶ月前。
blog動かして、データも復元したのがつい最近。
本当にやる事が遅くて、このペースだと死ぬまであっという間な気がする。
死ぬる時には、何かをやりきった気になりたい。
成田山新勝寺に行って、うなぎを食べた。
うなぎ屋さんが軒を連ねる中、事前にみてて美味しそうだったし、その場で調理しているのも面白かったので、川豊に行った。
嫁様とこどもは骨が気になると行ってたが、自分は全く気にならずおいしくいただきました。
漬物は頼まなくても奈良漬が出るものだと思ってたのだが、出てきたのは別の漬物だった。あれは失敗だった。
新勝寺はあまり時間がなくて見れなかったが、バリアフリーなつくりでベビーカー持ちにはありがたかった。
その後空港に行って飛行機をみた。
家を出たのが遅かったせいで、いろいろスケジュールが押してて空港についたのは夕方。
当日は割と涼しくて、離着陸を数機みて帰った。
昨日見た。
スコアは5-2で磐田の勝利!
等々力で磐田が勝ったのを見たのは2008年から住んでて初めてだと思う。
ひどい雨の中、見に行った甲斐がありました。
長男にディスられた。
毛が濃いから黒色のイエティだそうだ。
最初は何言ってるのか分からなかったが、分かったら、ジワジワきた。
自分が書かない書かないのは悪いなーと思い。
今日はビビンバを食べるときに、賞味期限切れのコチュジャンを入れて食べた。
すると案の定、お腹を下した。
あやうくお風呂でもらすところだった。
そんな時に限って子供が風呂から出てくれない…
本当にピンチだった。
El Capitanにアップデートした。
前のYosemiteの時はbrewが動かないとかあったけど、今回はすんなりできた。他になんかあんのかな?と思ってxcodeを動かしてみたけど、一応動いた。何も作ってないので、あまり確認のしようがなかった。
Eclipseはjavaのバージョンがどうこう言われて動かなかった。たぶん大分前からそうだったんだろうな…
ユーザ認証して、認証後のユーザ利用まで動作できたのでまとめる。
できたけど、フレームワークが提供してくれてるがいろいろ面倒くさい。
djangoって結構自前で作る部分が多いかと思うので、フレームワークがやってくれるのか、そこは自前なの?!、とかが分からなくてしんどかった。
とはいえユーザ認証する部分は上記サイトをまるまる参考にさせていただきました。
せいぜいurls.pyの書き方が違うくらい。
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'account/login.html'}), url(r'^logout/$', 'django.contrib.auth.views.logout', {'template_name': 'account/logout.html'}), url(r'^account/', include('account.urls', namespace='account')), ]
ユーザ認証を別のアプリケーションから利用するところが今回の記事のメインなんだけど、モデルを起こすところも、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モデルを指定。
from django.db import models from django.contrib.auth.models import User # Create your models here. class Todo(models.Model): user = models.ForeignKey(User, related_name='todo') memo = models.CharField('Memo', max_length=128)
admin.py。
from django.contrib import admin from todo.models import Todo # Register your models here. admin.site.register(Todo)
todo/urls.pyはフレームワーク生成ではなく、自分で作成。表示のみ。更新はadminからやる。
from django.conf.urls import url from django.contrib.auth.decorators import login_required from django.views.generic import TemplateView from . import views urlpatterns = [ url(r'^$', login_required(views.IndexView.as_view( template_name='todo/index.html')), name="index"), ]
views.py。何をこんなにimportしなきゃいかんのか分かってないけど、やる。しょうがない。まだdjangoはチュートリアルと、これしか作ってないし。
from django.shortcuts import render from django.core.urlresolvers import reverse from django.views import generic from django.http import HttpResponseRedirect, HttpResponse, Http404 from django.template import RequestContext, loader from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from .models import Todo # Create your views here. class IndexView(generic.ListView): template_name = 'todo/index.html' context_object_name = 'todo_list' def get_queryset(self): # reffer django-document. # Built-in class-based generic views > Dynamic.filtering # print(self.request.user) return Todo.objects.filter(user_id = self.request.user.id)
テンプレートの追加。ディレクトリ構成が気持ち悪いけど、他の書き方がよく分からない。
% mkdir -p todo/templates/todo/ % touch todo/templates/todo/index.html
▽ <p>{{ user.username }}</p> {% if todo_list %} <ul> {% for todo in todo_list %} <li>{{ todo.memo }}</li> {% endfor %} </ul> {% else %} <p>No item are available.</p> {% endif %}
あとは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