pythonその2
def add(x,y)はダメ。以下のエラーが。。。
typeError: add() takes exactly 2 arguments (3 given)
def add(self, x, y)ならオッケー。selfが必須なのか?!ネットで調べると、確かにそんなこと書いてある。そして他言語から来た人にはキモいとも書かれている…
ネットで例を見てたら、selfを書いていないのもある。どっちが本当?と思って試してたらclassのメソッドはselfが必要だけど、ただのメソッドなら要らないみたいで、以下はオッケーだった。
def add(x, y):
return x + y
result = add(100,200)
print result
別のファイルからクラスをnewしてメソッドを呼び出すというのもやってみた。from ファイル名 import クラス名と書くらしい。unit testはまた今度。
Share this:
Related posts
Mac Bookのアップデート
El Capitanにアップデートした。 前のYosemiteの時はbrewが動かないとかあったけど、今回はすんなりできた。他になんかあんのかな?と思ってxcodeを動かしてみたけど、一応動いた。何も作ってないので、あまり確認のしようがなかった。 Eclipseはjavaのバージョンがどうこう言われて動かなかった。たぶん大分前からそうだったんだろうな…
Share this:
- Author: vottie
- Category: コンピュータ
- Tags: el capitan, mac book, os x
vagrantでdjangoでユーザ認証
ユーザ認証して、認証後のユーザ利用まで動作できたのでまとめる。 できたけど、フレームワークが提供してくれてるがいろいろ面倒くさい。 djangoって結構自前で作る部分が多いかと思うので、フレームワークがやってくれるのか、そこは自前なの?!、とかが分からなくてしんどかった。 Djangoのユーザ認証まとめ | c-bata web とはいえユーザ認証する部分は上記サイトをまるまる参考にさせていただきました。 せいぜい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> {% […]
Share this:
- Author: vottie
- Category: コンピュータ
- Tags: authentication, django, python
markdownパーサをgithubで公開した
以前やろうとしたc++製markdownパーサのgithubでの公開、ようやくできた。前回はvagrantの環境作成で止まったが、結局ubuntu 12.04を無理やり使うのはやめて14.04のvmを新たに作った。 公開するのにサイト名とかいろいろハードコーティングだったのを設定ファイルに追い出す修正をするだけで、すごい時間がかかってしまった。まだ他にも気になる点はいろいろあるけど、直してると2015年終わっちゃうので、とりあえず公開した。 https://github.com/vottie/notes
Share this:
Trackbacks and Pingbacks on this post
No trackbacks.
- TrackBack URL
Comments on this post