1read 100read
2012年4月WebProg22: 【Python】Webフレームワーク Djangoスレ Part2 (106) TOP カテ一覧 スレ一覧 2ch元 削除依頼
★三 【 スクリプト改造工房 PART 9 】 ★三 (689)
PHP上級者が集まるスレ (489)
Zend Framework Part5 (638)
★三 【 スクリプト改造工房 PART 9 】 ★三 (689)
C/C++ CGIスレッド (707)
【GREE】ソーシャルアプリ開発スレ【モバゲー】 (121)

【Python】Webフレームワーク Djangoスレ Part2


1 :11/12/15 〜 最終レス :12/05/04
LL言語「Python」で実装されたWebフレームワーク Django
Web開発する上で必要となる機能がそろっており、
管理サイト画面を自動作成できるなどの特色を持ちます。
前スレ
【Python】Webフレームワーク Djangoスレ Part1
http://kohada.2ch.net/test/read.cgi/php/1156612854/
本家サイト
http://www.djangoproject.com/
日本語ユーザ会「Djangoと日本の仲間たち」
http://www.djangoproject.jp/
日本語解説サイト
ttp://ymasuda.jp/python/django/index.html
解説本(英語) 「Pro Django:」2006年10月30日出版予定
ttp://www.amazon.co.jp/gp/product/1590597257/
あなたがDjangoを利用すべき10の理由(和訳)
ttp://www.everes.net/2006/jan/30/3042306a305fdjango3092522975283059304d10306e74067531/
IT Pro記事
ttp://itpro.nikkeibp.co.jp/article/NEWS/20060410/234868/
IBM developerWork記事
ttp://www-06.ibm.com/jp/developerworks/linux/060802/j_l-django.shtml

2 :
落ちてたので立て直してみた
何度も落ちてるのでまた落ちると思うけどよろすく

3 :
で、今一番人気はどのフレームワークなの?

4 :
>>3
Djaンゴwwwwwww

5 :
↑マジで?
Turboの方がいいとか前聞いたことあったけど、やっぱDjangoなのか
速度も速いし、ライブラリのように使えて便利とか聞いて、そうなのかと思った記憶がある

6 :
同時並行で2つのアプリを作るならポート番号は別のにしないとダメ?
交互に起動すれば出来ると思ったんだけど、できなかった。

7 :
>>6
ポートは別にした方が無難。
同じポートを使いまわす場合は、ソケットオプションのreuse-addrを有効にしないと、
サーバが終了しててもしばらくの間はそのポート番号が使えない事がある。
grep してみたところ、djangoにそれっぽいオプションはなかった。

8 :
22 Dec django 1.4 alpha 1 released
ttps://docs.djangoproject.com/en/dev/releases/1.4-alpha-1/
Porting 2.x code so that it runs on 2.x and 3.x from a single codebase
ttps://code.djangoproject.com/wiki/PortingNotesFor2To3
Proposal: drop Python 2.5 support in Django 1.5
ttp://groups.google.com/group/django-developers/browse_thread/thread/a5e642c0e5fd6626

9 :
>>7
ありがと
8000と8080で頑張るわ

10 :
補足で、ポートを分けた方がいい理由としては、もうひとつ。
同じポートだとブラウザのキャッシュのアドレスが混ざってしまい、
別アプリ側のキャッシュを読んでしまう可能性があります。

11 :
ラインハルトさま

12 :
googleトレンドでフレームワークの比較したしたに
密かに django の数を支えてくれてるかも知れないお方ですね(違

13 :
>>11
生きる権利を行使するなら
それに見合った義務を果たせ

14 :
複合キーが使えないとかアホすぎる。、

15 :
同じ汎用ビューを複数使うとPaginatorを見るときに
最後のものを参照してしまうのですがどうすればいいでしょうか?
例えばurlsのところで
(r'^/A/(?P<page>[0-9]+)/$',
'django.views.generic.list_detail.object_list',
dicA),
(r'^/B/(?P<page>[0-9]+)/$',
'django.views.generic.list_detail.object_list',
dicB),
としたときに
A/1/のところでPage.next_page_number()を見ると
B/2/に飛んでしまいます。

16 :
djangoって2chじゃぜんぜん盛り上がってないですね

17 :
>>16
基本的に仕事ないからな

18 :
pythonで仕事できる会社少ないイメージあるね。
一度はpythonで食ってみたいもんだが。

19 :
あまりに過疎りすぎるとフレームワークやらライブラリが発展しなくなるのが心配。
海外ではそれなりに活性化されてるのかな?

20 :
日本はjavaかphpだけだよな
pythonのwebフレームワークはdjangoが一番無難とおもう

21 :
Djangoのルールに乗っかれないとバッドノウハウの塊になっちゃうのがなぁ。
(認証でUserテーブルを独自に定義したい場合とか)
他にいいフレームワークないですかね。
Flaskって奴もよさそうだけど、ちょっと軽量すぎる・・・
TurboGearsはどうなんだろう。
それとも素直にRailsとかCakePHP使っとくべきですかね。

22 :
Pylonsってのもあるのか。

23 :
pylonsはオワコン
pyramid

24 :
>>21
werkzeug

25 :
>>21
それはどんなフレームワークでも同じじゃね?

26 :
django-cmsって使ってる人いる?

27 :
サーブレットのように、あるリクエストで生成したインスタンスを
レスポンスが完了した後も残しておくことって出来ないですか?
出来ない場合、同じようなことをやろうと思ったらキャッシュ機能を
使うしかないですかね?
キャッシュだとシリアライズのコストの分が余計にかかるので
できればサーブレットのようにプロセスが常駐してインスタンスを
そのままメモリ上に持たせておきたいと思ったのですが・・・

28 :
タコですが質問です。
djangoって静的ファイルはhttpdでやれよって思想だと思うんですが、
セッション管理によるアクセス制限
(例えばdjangoでログイン中のみapacheから静的ファイルにアクセスできるようにする)
っていう仕組みはどのように実装したらいいんでしょうか?

29 :
>>27
私はタコですがセッションのどこかに放り込んでおけばいいのでは?
http://docs.nullpobug.com/django-doc-ja/trunk/topics/http/sessions.html#topics-http-sessions

30 :
>>27
memcached

31 :
この本読んだひといますか?
感想聞かせてください
WSGIウェブプログラミング
ttp://www.amazon.co.jp/dp/4877832882/
書評悪すぎてわろす

32 :
URLディスパッチャがめんどくさすぎる

33 :
>>28
djangoの「思想」は無視すればいいと主受け尾d。
URLに対応するファイルを読み込んでユーザチェックで分岐して
renderする処理を加えればいいだけじゃないの。
簡単にできるでしょう。

34 :
主受け尾d、ってなんだ・・タイポした
なお、djangoのstatic拒否っていう「思想」は別に珍しくなくて、
ホントにstacicならサーバにまかせます、っていうだけでしょ。
日本語の1.0 documentation読んでるとなんかすげー厳しいなあと思うかも知れないけど
1.3documentationの
https://docs.djangoproject.com/en/dev/howto/static-files/
を読めば1.0にはなかった
django.contrib.staticfiles
っていう仕組みもある。

35 :
Modelから作るフォーム、ModelFormで初期値を設定する事はできませんか?
-- model.py
class Shops(models.Model):
id = models.IntegerField(primary_key=True)
shop_name = models.CharField(max_length=765, verbose_name=u"店舗名称")
class ShopDetails(models.Model):
shop = models.ForeignKey(Shops,primary_key=True, verbose_name=u"店舗名称")
prefecture = models.ForeignKey(Prefectures, verbose_name=u"都道府県")
こういう二つのモデルがあって、ShopDetailsのフォームを
-- forms.py
class ShopDetailForm(ModelForm):
class Meta:
model = ShopDetails
exclude = ('shop',)
として、定義してます。
/shops/detailadd/12/
とかでidが12番を指定されている時は
いちいち、shopを選ぶフォームを出力したくないので
既にshopの中身に12番を入れておきたいのですが…
伝わりにくい質問でごめんなさい。

36 :
defaultとかあったと思うが,Metaでやるとできないか
JavaScriptでやるか,12をテンプレートでレンダ

37 :
>>36さん
レスありがとうございます。
<input type="hidden" name="shop" value="{{ shop_id }}>
みたいなテンプレートでやってみたんですが、Validateでエラーになってしまったもので...
Djangoマニュアルの英語版も読んだんですが、こういうところが書かれてないんですよねぇ。
どこかノウハウが集まってるサイトとかないんでしょうか。
みなさんはDjangoの情報収集はどこでされてますか?
GoogleのDjangoグループは全然更新されてないんで、困ってます...

38 :
たしかフォームクラスの__init__()でself.fields["fieldname"]に値いれればいけたと思う
この例だと
class ShopDetailForm(ModelForm):
 class Meta:
  model = ShopDetails
  exclude = ('shop',)
 def __init__(self, *args, **kwargs)
  shop_id = kwargs.pop( 'shop_id', None )
  super( ShopDetailForm, self ).__init__( *args, **kwargs )
  self.fields["shop"] = shop_id
かな
shop_idを与えてShopDetailFormを呼ぶ形で

39 :
ごめん嘘書いてた
class ShopDetailForm(ModelForm):
 class Meta:
  model = ShopDetails
 def __init__(self, *args, **kwargs)
  shop_id = kwargs.pop( 'shop_id', None )
  super( ShopDetailForm, self ).__init__( *args, **kwargs )
  if shop_id:
   self.fields["shop"].initial = shop_id
なんしかself.fields["hoge"]をイジれば動的にフィールドを操作できます

40 :
Django1.2を使ってます
テンプレートの使い方で質問していいでしょうか?
ちょっと困ってます
dataA.dataB[0].dataC を取り出す方法です。
[0]という表記がシンタックスエラーを出すので調べたらスライスフィルタを使えと
dataA.dataB|slice:"0:1" これだとdataBは取り出せますがここから詰まってます
どうか解決法をご存知の方ヒントをお願いします。
方法がなければデータそのものを加工して対処します。

41 :
簡単なマッパーかますのが一番楽じゃないかな
http://tokibito.bitbucket.org/bpmappers/
これとかオススメ

42 :
うわーー 最初からこれ使えばよかったーーー

43 :
テーブル生成についての質問なのですが
djangoでテーブルを動的に生成することってできますか?
ユーザ情報(これはカラム固定)がDBに入っていて
そこからある計算を行ってデータを作るのですが
それがカラム数が動的に変わってしまうのです
要するに動的に create を発行すればいいのですが
djangoの場合だとモデルクラスが対応してないとダメですよね…
というよりモデルクラスが先にあって、そこからテーブルを
作成するのが基本ですよね…
なにかうまい方法はないでしょうか…?
(すみませんが設計で回避というのは無しでお願いします)

44 :
発想を変えて動的にモデルをつくるようにしてみては?
モデルのプロパティはJSONとかにシリアライズしてblobで保存とか
MongoDBとかでも動的に変更できるけど茨の道

45 :
いよいよDjango1.4正式版でるね

46 :
なにが変わるの?

47 :
結構機能追加されてんね
1.3のデータベース周りの大幅アップデートに比べると霞むけど
テンプレートタグのelifは有難すぎ

48 :
djangoが楽すぎて他のフレームワークいじる気力なくなる

49 :
django使ってるのって、日本で10人ぐらい?

50 :
すごい優れたフレームワークだと思うので実践投入しようとしてるんだけど。
和書は1.0前のしかないし、Django Book 2.0すら和訳途中で頓挫してるし…
Googleグループも過疎ってるし。日本語で情報共有できないのが辛い。
英語だけどKindleの電子書籍はいっぱい売ってるし、海外フォーラムでは話題が多いんだよね。
逆に、今なら日本語Django界で名を挙げるチャンスなの?w
githubとかでもいいからDjango使っているプロジェクトとかソースコード読んで参考にしたい。
誰か情報共有してくれー!

51 :
そもそもPython使ってる人が日本に20人ぐらいしかいないから。

52 :
俺もいるから21人だな

53 :
いや、お前入れて20人だから

54 :
こういう地域による過疎フレームワークってどうやって情報共有すればいいんだろうね

55 :
英語読めれば問題ない

56 :
電気無ければただの箱的な?

57 :
Django使うような奴らは国内なんかが住処じゃねーって!?
日本じゃ王道はRubyでRails。
Pythonなんかインデント言語って馬鹿にされて、
日本じゃ誰も評価されないDjango使う馬鹿は相手が世界ってことか?
面白いじゃないの!実践投入させてもらうぜ!

58 :
世界目指そうぜ

59 :
ケータイサイトとか作るんじゃなければいいかもね。
今さらケータイサイトとか作ってる場合じゃないけどな。

60 :
ええと…
class input_data:
class output_data:
class hoge:
def calculate(input_data data):
return output_data
djangoとは別にこんなモジュールがあったとして(これ自体はcui上で動く)、これをdjangoを使って
webアプリにしたいんですが、その場合にinput_dataとoutput_dataをDB経由で処理するには
どうしたらいいでしょうか?
hogeはviews.pyから呼べばいいと思いますが、input_dataとoutput_dataは、これらと全く同じ
モデルクラスを作り直すしかないですかね
でもそうなると結局hogeも作り直す必要がありますよね・・・・
できれば既にあるソースを流用したいんですけど、そういうことをするにはdjangoでは無理ですか?
(ORマッパーがモデルクラスと一体化してるというか)
何かいいアイデアあったら教えてください m(_ _)m

61 :
django用にクラス作りなおすしかないんじゃないかな

62 :
モデルの中にdataクラスいれるのが単純かなぁ。(コンポジション?)
モデルにdataクラスへの入出力追加するだけだし。

63 :
>>62
> モデルの中にdataクラスいれるのが単純かなぁ。(コンポジション?)
> モデルにdataクラスへの入出力追加するだけだし。
すみません、具体的なイメージが湧かないのですが
例えばinput_dataが
class input_data:
def __init__(self, name, value):
self.name = name # string
self.value = value # integer
こんなクラスだとしたら、これをプロパティにしたモデルクラスって
具体的にどうなるんでしょうか?

64 :
データベースへのアクセスはdjangoのORMを使うの?
それとも別に用意されてるの?

65 :
>>64
ORマッパーが先に決まっているわけではないです
djangoのモデルクラスを利用して既にあるデータクラスを
そのまま使える方法があれば一番いいですし
それが無理そうなら別の方法を考える、という感じです。
昨日調べてたらSQLをそのまま発行することは出来るみたいなので、
資産の有効利用を優先するならそれもありかな、と少し考えています。

66 :
カスタムマネージャでなんとかなるかも
マネージャをゴリゴリ書く必要あるけれども
ただちっと面倒くさいよね何やるにしても

67 :
寛解に至らない

68 :
偉い人へ:
djangoforms の BooleanField で checkboxを出すとHTMLが、
「ラベル □」になちゃうんだけど、「□ ラベル」にするのってどうやるの?

69 :
自分はその辺の面倒くさいところテンプレートでやってる
widgetを書く方法もあるけどテンプレートの方がしっくりくる
class Hoge(Model):
 name = BooleanField()
のモデルがあるとしてこのモデルフォームのテンプレート変数名がformだとした場合
{% for field in form %}
<label>{{ field.label}}</label>{{ field }}
みたいな感じで自由に組める
あとはHTMLとCSSでお好きなように
この辺も参考にしてみて
ttps://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs#customizing-the-form-template

70 :
>>69
自分でテンプレートに展開するのって自由で素敵ですね。
トライしてみます。偉い人ありがと。

71 :
他のスレで質問したところ、こちらへ誘導されました: http://kohada.2ch.net/test/read.cgi/php/1302598469/725-726
以下、上記URLより再掲です。
---
スクリプト の import と テンプレートの extends とがそれぞれよくわかっておらず、ファイルの置き場所がごちゃごちゃになってしまいます。整理するにはどうすればよいでしょうか。
問題点
● テンプレートの多重継承がうまくできない
operation1.html で {% extends "../master.html" %}
master.html で {% extends "../base.html" %}
とすると base.html が見つからなくなります。どうやら孫にあたる operation1.html からの相対パス ../base.html を探しているようです。
・ テンプレート内の記述を変えずに問題を解決する方法があれば教えてください。
・ django は 最初のバージョンのみでよいので、右記ページのような問題はありません。 http://stackoverflow.com/questions/5263623/templatedoesnotexist-on-python-app-engine-django-1-2-while-template-rendering-re
● import の書き方がわからない
大雑把にいって handler の中身が Controller, libs の中身が Model にあたります。
main.py で handlers1.py を、handler1.py で user_auth.py を、それぞれ import したいです。
・ import 文の書き方を教えてください。__init__.py が必要になるのであれば、内容も教えてください。

72 :
ファイル構成は下記のようにする予定です:
- app.yaml
- main.py
- handlers
- - handler1.py
- - handler2.py
- libs
- - user_auth.py
- - main_datastore.py
- template
- - base.html
- - master
- - - master.html
- - - operation1
- - - - operation1.html
...

73 :
相対じゃなくて絶対でやるといいよ
相対 {% extends "../master.html" %}
絶対 {% extends "master/master.html" %}
でsettings.pyのTEMPLATE_LOADERSに
'django.template.loaders.app_directories.Loader',
これがついてると各アプリケーション・ディレクトリ内にあるtemplatesというディレクトリを探して"master/master.html"という記述ができるようになります
例:アプリケーション名"app_name"を持つdjangoのディレクトリ構造
app_name
- templates (アプリケーション・ディレクトリ内のテンプレート置き場)
- - app_name
- - - master.html
templates (プロジェクト全体で参照するテンプレート置き場)
- base.html
master.htmlからbase.htmlを継承するには、master.html内に{% extends "base.html" %}でok
このようにアプリケーション毎に分離しextendsしていくと綺麗に分離できるよ

74 :
importに関してはhandlersディレクトリとlibsディレクトリ両方に__init__.pyが必要
さらにmanage.pyにlibs/handlersを参照できるように以下を記述
import os
import site
import sys
ROOT = os.path.dirname( os.path.abspath( __file__ ) )
path = lambda * a: os.path.join( ROOT, *a )
prev_sys_path = list( sys.path )
site.addsitedir( path( 'handlers' ) )
site.addsitedir( path( 'libs' ) )
new_sys_path = []
for item in list( sys.path ):
if item not in prev_sys_path:
new_sys_path.append( item )
sys.path.remove( item )
sys.path[:0] = new_sys_path
で各ファイルでのimportを以下のように行える
main.py
from handlers import handler1
handler1.py
from libs import user_auth
検証してないけどこんな感じだよ

75 :
それとdjangoの基本的なディレクトリ構造は
project_name
- app_name
- - models.py
- - views.py
- - urls.py
- - templates
- templates
- manage.py
- settings.py
- urls.py
となってますので、可能であればhandlers内とlibs内のそれぞれの1と2を別アプリとして分離し作っていくのがあとあと楽と感じます
project_name
- app1
- - models.py(user_auth.py)
- - views.py(handler1.py)
- - templates
- - - app1
- - - - app1.html
- app2
- - models.py (main_datastore.py)
- - views.py (handler2.py)
- - templates
- - - app2
- - - - app2.html
- templates
- - base.html

76 :
>>73-75
回答ありがとうございます。今夜ためしてみます。

77 :
なんか馬鹿みたいな質問なんですけど
djangoでwebアプリを作ったときに
定数とか設定ファイルみたいなものを用意して
webサーバー起動時にそれを一度だけ読み込んだら
アプリが終了するまではその値をいつでも参照できるように
しておくことってできないですか?
ちなみにwebサーバーはapacheを使ってます
(apacheとdjangoをmod wsgiで連携)

78 :
そいうのはsettings.pyに書いとくといいです
settings.pyにHOGE="hoge"としておくと
from django.conf import settings
settings.HOGE
と言った感じで参照できます

79 :
なるほど!
ありがとうございました!

80 :
gae/p の blobstoreで、アップロードのついでに POSTした日本語が文字化けする障害って
まだ直っていないようですね・・
何年か前に Google-App-Engine-Japanに障害報告が上がってるのに。
仕事遅いなぁ中の人。
この障害への回避策って、Base64エンコードぐらいでしょうか?

81 :
gaeでdjango使うのしんどくない?

82 :
>>81
何とか使ってます。

83 :
超伸びてるし…
>>34
ありがとうございました

84 :
phpディスられてる割りにユーザ増えんね…

85 :
日本だとrubyに流れるんだろうね
2.x系は日本語の扱い面倒くさいし

86 :
ruby使ってる人=はてな民=常に上から目線みたいなイメージがあって、どうもrubyに触手が動かない

87 :
>>84
戦車に例えると
PHP4はT34/76
PHP5はT34/85
Railsはパンター
DjangoはタイガーI
って感じだからな。
JavaとかASP.NETはM4と言うか米軍

88 :
>>87
例えがむつかしい。

89 :
言語とフレームワークごちゃまぜなのがいただけない

90 :
>DjangoはタイガーI
重そうww
喩えが非常に良くないw

91 :
>rubyに触手が動かない
ひどい偏見ながらbeginとかendとか見た時にMSのマクロ系連想しちゃって受け付けなかった
pythonってweb以外にも科学技術計算とか沢山あるしね
数の暴力でアホみたいにライブラリ充実させて、負けることは絶対無いと思う
googleさんもいるし…

92 :
begin end はPascal系だろ

93 :
1.4文書にはリリースするならmod_wsgi使えって書いてあるね
ttps://docs.djangoproject.com/en/1.4/topics/install/

94 :
1.4でstartprojectしたら
project
-manage.py
--project
---settings.py
---wsgi.py
みたいになっててちょっと焦った
manage.pyの処理もちょっと変わったみたいで過去のプロジェクトそのままじゃ動かんかった
あとrunserverもwsgi指定できんのかな
settings.WSGI_APPLICATIONとかオプション出来てる
あとで調べてみよ

95 :
mod_wsgiだとDjangoがなぜかApacheで走らなくて
mod_pythonで動かしてる俺にはヤバいニュースだな。
ドキュメント通りにインスコしても何も表示されないんだよなー。

96 :
nginx+uwsgiマジオススメ

97 :
>>94>>95の時刻逆になってるぞ
mod_wsgi系の設定はここにかいてあるっぽい
ttps://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/

98 :
>>94>>95の時刻逆になってるぞ

勘違いでした^^;

99 :
1.4かなり変わってんだな
urlテンプレートタグとGeneric View直すの面倒かった

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
PHP初心者勉強会やらんかね! (474)
Namazu全文検索システム (364)
Servlet (152)
■最強の系サイト作ろうぜ!■ (170)
何も分からん俺がPHPでWEBサイトを作るスレ (141)
PHPBB (750)
--log9.info------------------
モーレツ宇宙海賊 (170)
キルミーベイベー (727)
とらぶる第二部放映決定!!!!!!!!!!!! (134)
プリティーリズム (309)
「君に届け」の2期キタ━━━━(゚∀゚)━━━━ !!!!! (118)
未来日記 2 (173)
GOSICK―ゴシック― お菓子3箇目 (264)
神様のメモ帳2 (318)
【武田弘光】マケン姫っ!―MAKEN-KI!― (837)
パパのいうことを聞きなさい! (645)
SKET DANCEアニメ化計画 (427)
Dororonえん魔くんメ〜ラめら! (399)
青の祓魔師 アニメ化決定! 2 (328)
ダンボール戦記 (136)
ぬらりひょんの孫 アニメ化決定!!!!第五幕 (860)
Kiss×sis キスシス (145)
--log55.com------------------
介護職に巣食うクズの特徴
【臭肛門】介護を辞めたい 68R目【臭R】
はかない夢で終わる 淑徳大学
相談支援専門員について
【職員】介護福祉士の実習【利用者】
◆◆シンワオックス◆◆
知的障碍者施設の生活介護、生活支援員やってる人
介護職に就いた理由は何ですか