【Python】Webフレームワーク Djangoスレ Part2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/12/15(木) 23:47:02.03ID:???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
0008nobodyさん
2011/12/26(月) 14:56:38.54ID:???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
0010nobodyさん
2011/12/26(月) 15:48:49.02ID:???同じポートだとブラウザのキャッシュのアドレスが混ざってしまい、
別アプリ側のキャッシュを読んでしまう可能性があります。
0011nobodyさん
2011/12/27(火) 06:06:43.86ID:???0012nobodyさん
2011/12/27(火) 19:32:02.12ID:???密かに django の数を支えてくれてるかも知れないお方ですね(違
0014nobodyさん
2012/01/03(火) 09:37:05.06ID:???0015nobodyさん
2012/01/04(水) 21:31:19.42ID:???最後のものを参照してしまうのですがどうすればいいでしょうか?
例えば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/に飛んでしまいます。
0016nobodyさん
2012/01/08(日) 19:07:42.92ID:???0018nobodyさん
2012/01/10(火) 00:56:59.16ID:???一度はpythonで食ってみたいもんだが。
0019nobodyさん
2012/01/14(土) 12:34:09.69ID:???海外ではそれなりに活性化されてるのかな?
0020nobodyさん
2012/01/15(日) 16:43:29.95ID:???pythonのwebフレームワークはdjangoが一番無難とおもう
0021nobodyさん
2012/01/21(土) 04:24:28.26ID:???(認証でUserテーブルを独自に定義したい場合とか)
他にいいフレームワークないですかね。
Flaskって奴もよさそうだけど、ちょっと軽量すぎる・・・
TurboGearsはどうなんだろう。
それとも素直にRailsとかCakePHP使っとくべきですかね。
0022nobodyさん
2012/01/21(土) 04:47:17.81ID:???0023nobodyさん
2012/01/21(土) 07:22:45.45ID:???pyramid
0026nobodyさん
2012/02/07(火) 23:14:28.71ID:???0027nobodyさん
2012/02/09(木) 22:59:21.30ID:lRLr0cSKレスポンスが完了した後も残しておくことって出来ないですか?
出来ない場合、同じようなことをやろうと思ったらキャッシュ機能を
使うしかないですかね?
キャッシュだとシリアライズのコストの分が余計にかかるので
できればサーブレットのようにプロセスが常駐してインスタンスを
そのままメモリ上に持たせておきたいと思ったのですが・・・
0028nobodyさん
2012/02/09(木) 23:21:54.04ID:/iRWC1gwdjangoって静的ファイルはhttpdでやれよって思想だと思うんですが、
セッション管理によるアクセス制限
(例えばdjangoでログイン中のみapacheから静的ファイルにアクセスできるようにする)
っていう仕組みはどのように実装したらいいんでしょうか?
0029nobodyさん
2012/02/09(木) 23:24:12.52ID:/iRWC1gw私はタコですがセッションのどこかに放り込んでおけばいいのでは?
http://docs.nullpobug.com/django-doc-ja/trunk/topics/http/sessions.html#topics-http-sessions
0031nobodyさん
2012/02/17(金) 18:11:15.99ID:???感想聞かせてください
WSGIウェブプログラミング
ttp://www.amazon.co.jp/dp/4877832882/
書評悪すぎてわろす
0032nobodyさん
2012/02/19(日) 09:53:00.31ID:???0033nobodyさん
2012/02/20(月) 09:54:33.74ID:???djangoの「思想」は無視すればいいと主受け尾d。
URLに対応するファイルを読み込んでユーザチェックで分岐して
renderする処理を加えればいいだけじゃないの。
簡単にできるでしょう。
0034nobodyさん
2012/02/20(月) 10:17:08.89ID:???なお、djangoのstatic拒否っていう「思想」は別に珍しくなくて、
ホントにstacicならサーバにまかせます、っていうだけでしょ。
日本語の1.0 documentation読んでるとなんかすげー厳しいなあと思うかも知れないけど
1.3documentationの
https://docs.djangoproject.com/en/dev/howto/static-files/
を読めば1.0にはなかった
django.contrib.staticfiles
っていう仕組みもある。
0035nobodyさん
2012/03/06(火) 19:10:17.43ID:???-- 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番を入れておきたいのですが…
伝わりにくい質問でごめんなさい。
0036nobodyさん
2012/03/06(火) 19:21:31.04ID:???JavaScriptでやるか,12をテンプレートでレンダ
0037nobodyさん
2012/03/06(火) 22:42:25.29ID:???レスありがとうございます。
<input type="hidden" name="shop" value="{{ shop_id }}>
みたいなテンプレートでやってみたんですが、Validateでエラーになってしまったもので...
Djangoマニュアルの英語版も読んだんですが、こういうところが書かれてないんですよねぇ。
どこかノウハウが集まってるサイトとかないんでしょうか。
みなさんはDjangoの情報収集はどこでされてますか?
GoogleのDjangoグループは全然更新されてないんで、困ってます...
0038nobodyさん
2012/03/08(木) 20:42:59.17ID:???この例だと
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を呼ぶ形で
0039nobodyさん
2012/03/08(木) 23:23:35.64ID:???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"]をイジれば動的にフィールドを操作できます
0040nobodyさん
2012/03/12(月) 10:05:17.14ID:C6qcHZnAテンプレートの使い方で質問していいでしょうか?
ちょっと困ってます
dataA.dataB[0].dataC を取り出す方法です。
[0]という表記がシンタックスエラーを出すので調べたらスライスフィルタを使えと
dataA.dataB|slice:"0:1" これだとdataBは取り出せますがここから詰まってます
どうか解決法をご存知の方ヒントをお願いします。
方法がなければデータそのものを加工して対処します。
0041nobodyさん
2012/03/12(月) 15:15:04.03ID:???http://tokibito.bitbucket.org/bpmappers/
これとかオススメ
0042nobodyさん
2012/03/12(月) 15:23:09.23ID:C6qcHZnA0043nobodyさん
2012/03/12(月) 23:05:19.96ID:7b+JBvuOdjangoでテーブルを動的に生成することってできますか?
ユーザ情報(これはカラム固定)がDBに入っていて
そこからある計算を行ってデータを作るのですが
それがカラム数が動的に変わってしまうのです
要するに動的に create を発行すればいいのですが
djangoの場合だとモデルクラスが対応してないとダメですよね…
というよりモデルクラスが先にあって、そこからテーブルを
作成するのが基本ですよね…
なにかうまい方法はないでしょうか…?
(すみませんが設計で回避というのは無しでお願いします)
0044nobodyさん
2012/03/13(火) 03:34:44.28ID:???モデルのプロパティはJSONとかにシリアライズしてblobで保存とか
MongoDBとかでも動的に変更できるけど茨の道
0045nobodyさん
2012/03/21(水) 00:32:52.23ID:???0046nobodyさん
2012/03/21(水) 03:08:20.87ID:???0047nobodyさん
2012/03/21(水) 15:05:16.44ID:???1.3のデータベース周りの大幅アップデートに比べると霞むけど
テンプレートタグのelifは有難すぎ
0048nobodyさん
2012/03/23(金) 17:41:38.22ID:???0049nobodyさん
2012/03/27(火) 17:54:08.18ID:???0050nobodyさん
2012/03/28(水) 07:08:10.63ID:???和書は1.0前のしかないし、Django Book 2.0すら和訳途中で頓挫してるし…
Googleグループも過疎ってるし。日本語で情報共有できないのが辛い。
英語だけどKindleの電子書籍はいっぱい売ってるし、海外フォーラムでは話題が多いんだよね。
逆に、今なら日本語Django界で名を挙げるチャンスなの?w
githubとかでもいいからDjango使っているプロジェクトとかソースコード読んで参考にしたい。
誰か情報共有してくれー!
0051nobodyさん
2012/03/28(水) 10:08:47.56ID:???0052nobodyさん
2012/03/28(水) 11:50:18.09ID:???0053nobodyさん
2012/03/28(水) 13:38:31.77ID:???0054nobodyさん
2012/03/28(水) 13:39:31.42ID:???0055nobodyさん
2012/03/28(水) 13:54:02.73ID:???0056nobodyさん
2012/03/29(木) 12:41:43.24ID:???005750
2012/03/29(木) 16:31:42.56ID:???日本じゃ王道はRubyでRails。
Pythonなんかインデント言語って馬鹿にされて、
日本じゃ誰も評価されないDjango使う馬鹿は相手が世界ってことか?
面白いじゃないの!実践投入させてもらうぜ!
0058nobodyさん
2012/03/29(木) 17:30:04.77ID:???0059nobodyさん
2012/03/29(木) 17:54:31.44ID:???今さらケータイサイトとか作ってる場合じゃないけどな。
0060nobodyさん
2012/04/01(日) 02:28:54.90ID:2batclMoclass 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
0061nobodyさん
2012/04/01(日) 19:41:26.66ID:???0062nobodyさん
2012/04/01(日) 20:24:12.51ID:???モデルにdataクラスへの入出力追加するだけだし。
0063nobodyさん
2012/04/01(日) 20:44:17.44ID:1e7s1g7e> モデルの中にdataクラスいれるのが単純かなぁ。(コンポジション?)
> モデルにdataクラスへの入出力追加するだけだし。
すみません、具体的なイメージが湧かないのですが
例えばinput_dataが
class input_data:
def __init__(self, name, value):
self.name = name # string
self.value = value # integer
こんなクラスだとしたら、これをプロパティにしたモデルクラスって
具体的にどうなるんでしょうか?
0064nobodyさん
2012/04/02(月) 08:58:12.36ID:???それとも別に用意されてるの?
0065nobodyさん
2012/04/02(月) 23:50:34.00ID:VGFPGSaKORマッパーが先に決まっているわけではないです
djangoのモデルクラスを利用して既にあるデータクラスを
そのまま使える方法があれば一番いいですし
それが無理そうなら別の方法を考える、という感じです。
昨日調べてたらSQLをそのまま発行することは出来るみたいなので、
資産の有効利用を優先するならそれもありかな、と少し考えています。
0066nobodyさん
2012/04/03(火) 00:06:10.55ID:???マネージャをゴリゴリ書く必要あるけれども
ただちっと面倒くさいよね何やるにしても
0067名無しさん
2012/04/03(火) 20:20:49.11ID:1QQjv7Jc0068nobodyさん
2012/04/05(木) 14:53:34.26ID:zbL83UyRdjangoforms の BooleanField で checkboxを出すとHTMLが、
「ラベル □」になちゃうんだけど、「□ ラベル」にするのってどうやるの?
0069nobodyさん
2012/04/05(木) 21:04:53.80ID:???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
0070nobodyさん
2012/04/05(木) 22:30:34.63ID:zbL83UyR自分でテンプレートに展開するのって自由で素敵ですね。
トライしてみます。偉い人ありがと。
0071nobodyさん
2012/04/07(土) 16:34:57.81ID:BeoWQwVe以下、上記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 が必要になるのであれば、内容も教えてください。
007271
2012/04/07(土) 16:35:33.15ID:???- 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
...
0073nobodyさん
2012/04/08(日) 01:26:13.09ID:???相対 {% 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していくと綺麗に分離できるよ
0074nobodyさん
2012/04/08(日) 01:27:37.88ID:???さらに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
検証してないけどこんな感じだよ
0075nobodyさん
2012/04/08(日) 02:13:49.24ID:???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
0077nobodyさん
2012/04/08(日) 23:48:05.79ID:Iqgx/7Sddjangoでwebアプリを作ったときに
定数とか設定ファイルみたいなものを用意して
webサーバー起動時にそれを一度だけ読み込んだら
アプリが終了するまではその値をいつでも参照できるように
しておくことってできないですか?
ちなみにwebサーバーはapacheを使ってます
(apacheとdjangoをmod wsgiで連携)
0078nobodyさん
2012/04/08(日) 23:54:59.79ID:???settings.pyにHOGE="hoge"としておくと
from django.conf import settings
settings.HOGE
と言った感じで参照できます
0079nobodyさん
2012/04/09(月) 01:35:18.14ID:8JTXJRqlありがとうございました!
0080nobodyさん
2012/04/10(火) 22:13:14.47ID:nA+GylzOまだ直っていないようですね・・
何年か前に Google-App-Engine-Japanに障害報告が上がってるのに。
仕事遅いなぁ中の人。
この障害への回避策って、Base64エンコードぐらいでしょうか?
0081nobodyさん
2012/04/11(水) 02:44:16.83ID:???0082nobodyさん
2012/04/11(水) 10:56:01.11ID:WgNPCZsm何とか使ってます。
0083nobodyさん
2012/04/13(金) 13:19:14.34ID:0/eMv/lO>>34
ありがとうございました
0084nobodyさん
2012/04/13(金) 13:23:02.97ID:???0085nobodyさん
2012/04/13(金) 23:04:56.60ID:???2.x系は日本語の扱い面倒くさいし
0086nobodyさん
2012/04/13(金) 23:40:44.62ID:???0087nobodyさん
2012/04/14(土) 00:46:37.29ID:???戦車に例えると
PHP4はT34/76
PHP5はT34/85
Railsはパンター
DjangoはタイガーI
って感じだからな。
JavaとかASP.NETはM4と言うか米軍
0089nobodyさん
2012/04/14(土) 02:51:40.51ID:???0090nobodyさん
2012/04/14(土) 02:57:17.67ID:???重そうww
喩えが非常に良くないw
0091nobodyさん
2012/04/14(土) 03:02:12.44ID:???ひどい偏見ながらbeginとかendとか見た時にMSのマクロ系連想しちゃって受け付けなかった
pythonってweb以外にも科学技術計算とか沢山あるしね
数の暴力でアホみたいにライブラリ充実させて、負けることは絶対無いと思う
googleさんもいるし…
0092nobodyさん
2012/04/14(土) 23:30:25.46ID:???0093nobodyさん
2012/04/16(月) 15:34:39.61ID:???ttps://docs.djangoproject.com/en/1.4/topics/install/
0094nobodyさん
2012/04/16(月) 21:36:37.11ID:???project
-manage.py
--project
---settings.py
---wsgi.py
みたいになっててちょっと焦った
manage.pyの処理もちょっと変わったみたいで過去のプロジェクトそのままじゃ動かんかった
あとrunserverもwsgi指定できんのかな
settings.WSGI_APPLICATIONとかオプション出来てる
あとで調べてみよ
0095nobodyさん
2012/04/16(月) 23:17:56.03ID:???mod_pythonで動かしてる俺にはヤバいニュースだな。
ドキュメント通りにインスコしても何も表示されないんだよなー。
0096nobodyさん
2012/04/17(火) 00:08:34.20ID:???0097nobodyさん
2012/04/17(火) 02:08:18.68ID:???mod_wsgi系の設定はここにかいてあるっぽい
ttps://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/
0099nobodyさん
2012/04/18(水) 00:34:32.35ID:???urlテンプレートタグとGeneric View直すの面倒かった
0100nobodyさん
2012/04/18(水) 12:43:31.07ID:Wype6WQ20101nobodyさん
2012/04/19(木) 02:40:41.54ID:???メモリリークが一目でわかる
ttps://github.com/munhitsu/django-dowser
0102nobodyさん
2012/04/19(木) 20:46:19.69ID:1eA2rign例えばUserオブジェクトに属性email、アクセサemail()があるとき
{{ user.email }} とは書けるけど {{ user.email() }} だとエラーになります。
TemplateSyntaxError: Could not parse the remainder: '()' from 'user.email()'
これはどうしてなんでしょうか。
ドキュメントにはテンプレートエンジンが.(dot)を見つけたとき以下の順で評価を試みるとあるけど
関係してるのかなんだかさっぱり・・・
辞書の照合 (lookup)=>属性の照合=>メソッドの呼び出し=>リストをインデクス指定して照合
0103nobodyさん
2012/04/19(木) 21:00:09.93ID:1eA2rignということは、テンプレートに書くときはメソッド呼び出しにカッコはつけないということなのかな。
ぐぐってたら"丸括弧を付ける必要はありません"と書いてるページがあって
曖昧ではありますが、ひとまずそのつもりで進めてみますですm(_ _)m
0104nobodyさん
2012/04/26(木) 07:06:17.63ID:RMLosHkbFormPreviewを使って、プレビュー付きの登録ページを作っています。
普通はこんな感じ↓でurls.pyに書いて呼び出しますが、
url(r'^register$', RegistFormPreview(RegistForm)),
既にDBに情報が記録されている場合、
その情報を編集できるように、こんな感じ↓の処理をさせたいと考えています。
def register(request):
try:
# DB登録済みなので編集画面を表示
profile = request.user.get_profile()
return RegistFormPreview(RegistForm(profile))
except SiteProfileNotAvailable:
# DBにないので、新規登録画面を表示
return RegistFormPreview(RegistForm())
けど、関数内からClass Based Viewを呼び出すことはできないみたい。
何か良い方法ないでしょうか?
0107nobodyさん
2012/05/09(水) 15:53:29.80ID:???良い所と悪い所を教えてください。
■ このスレッドは過去ログ倉庫に格納されています