【Python】Webフレームワーク Djangoスレ Part2
落ちてたので立て直してみた
何度も落ちてるのでまた落ちると思うけどよろすく
で、今一番人気はどのフレームワークなの?
↑マジで?
Turboの方がいいとか前聞いたことあったけど、やっぱDjangoなのか
速度も速いし、ライブラリのように使えて便利とか聞いて、そうなのかと思った記憶がある
同時並行で2つのアプリを作るならポート番号は別のにしないとダメ?
交互に起動すれば出来ると思ったんだけど、できなかった。
>>6 ポートは別にした方が無難。
同じポートを使いまわす場合は、ソケットオプションのreuse-addrを有効にしないと、
サーバが終了しててもしばらくの間はそのポート番号が使えない事がある。
grep してみたところ、djangoにそれっぽいオプションはなかった。
補足で、ポートを分けた方がいい理由としては、もうひとつ。
同じポートだとブラウザのキャッシュのアドレスが混ざってしまい、
別アプリ側のキャッシュを読んでしまう可能性があります。
ラインハルトさま
googleトレンドでフレームワークの比較したしたに
密かに django の数を支えてくれてるかも知れないお方ですね(違
>>11 生きる権利を行使するなら
それに見合った義務を果たせ
複合キーが使えないとかアホすぎる。、
同じ汎用ビューを複数使うと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/に飛んでしまいます。
djangoって2chじゃぜんぜん盛り上がってないですね
pythonで仕事できる会社少ないイメージあるね。
一度はpythonで食ってみたいもんだが。
あまりに過疎りすぎるとフレームワークやらライブラリが発展しなくなるのが心配。
海外ではそれなりに活性化されてるのかな?
日本はjavaかphpだけだよな
pythonのwebフレームワークはdjangoが一番無難とおもう
Djangoのルールに乗っかれないとバッドノウハウの塊になっちゃうのがなぁ。
(認証でUserテーブルを独自に定義したい場合とか)
他にいいフレームワークないですかね。
Flaskって奴もよさそうだけど、ちょっと軽量すぎる・・・
TurboGearsはどうなんだろう。
それとも素直にRailsとかCakePHP使っとくべきですかね。
Pylonsってのもあるのか。
pylonsはオワコン
pyramid
>>21 それはどんなフレームワークでも同じじゃね?
django-cmsって使ってる人いる?
27 :
nobodyさん:2012/02/09(木) 22:59:21.30 ID:lRLr0cSK
サーブレットのように、あるリクエストで生成したインスタンスを
レスポンスが完了した後も残しておくことって出来ないですか?
出来ない場合、同じようなことをやろうと思ったらキャッシュ機能を
使うしかないですかね?
キャッシュだとシリアライズのコストの分が余計にかかるので
できればサーブレットのようにプロセスが常駐してインスタンスを
そのままメモリ上に持たせておきたいと思ったのですが・・・
28 :
nobodyさん:2012/02/09(木) 23:21:54.04 ID:/iRWC1gw
タコですが質問です。
djangoって静的ファイルはhttpdでやれよって思想だと思うんですが、
セッション管理によるアクセス制限
(例えばdjangoでログイン中のみapacheから静的ファイルにアクセスできるようにする)
っていう仕組みはどのように実装したらいいんでしょうか?
29 :
nobodyさん:2012/02/09(木) 23:24:12.52 ID:/iRWC1gw
URLディスパッチャがめんどくさすぎる
>>28 djangoの「思想」は無視すればいいと主受け尾d。
URLに対応するファイルを読み込んでユーザチェックで分岐して
renderする処理を加えればいいだけじゃないの。
簡単にできるでしょう。
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番を入れておきたいのですが…
伝わりにくい質問でごめんなさい。
defaultとかあったと思うが,Metaでやるとできないか
JavaScriptでやるか,12をテンプレートでレンダ
>>36さん
レスありがとうございます。
<input type="hidden" name="shop" value="{{ shop_id }}>
みたいなテンプレートでやってみたんですが、Validateでエラーになってしまったもので...
Djangoマニュアルの英語版も読んだんですが、こういうところが書かれてないんですよねぇ。
どこかノウハウが集まってるサイトとかないんでしょうか。
みなさんはDjangoの情報収集はどこでされてますか?
GoogleのDjangoグループは全然更新されてないんで、困ってます...
たしかフォームクラスの__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を呼ぶ形で
ごめん嘘書いてた
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 :
nobodyさん:2012/03/12(月) 10:05:17.14 ID:C6qcHZnA
Django1.2を使ってます
テンプレートの使い方で質問していいでしょうか?
ちょっと困ってます
dataA.dataB[0].dataC を取り出す方法です。
[0]という表記がシンタックスエラーを出すので調べたらスライスフィルタを使えと
dataA.dataB|slice:"0:1" これだとdataBは取り出せますがここから詰まってます
どうか解決法をご存知の方ヒントをお願いします。
方法がなければデータそのものを加工して対処します。
42 :
nobodyさん:2012/03/12(月) 15:23:09.23 ID:C6qcHZnA
うわーー 最初からこれ使えばよかったーーー
43 :
nobodyさん:2012/03/12(月) 23:05:19.96 ID:7b+JBvuO
テーブル生成についての質問なのですが
djangoでテーブルを動的に生成することってできますか?
ユーザ情報(これはカラム固定)がDBに入っていて
そこからある計算を行ってデータを作るのですが
それがカラム数が動的に変わってしまうのです
要するに動的に create を発行すればいいのですが
djangoの場合だとモデルクラスが対応してないとダメですよね…
というよりモデルクラスが先にあって、そこからテーブルを
作成するのが基本ですよね…
なにかうまい方法はないでしょうか…?
(すみませんが設計で回避というのは無しでお願いします)
発想を変えて動的にモデルをつくるようにしてみては?
モデルのプロパティはJSONとかにシリアライズしてblobで保存とか
MongoDBとかでも動的に変更できるけど茨の道
いよいよDjango1.4正式版でるね
なにが変わるの?
結構機能追加されてんね
1.3のデータベース周りの大幅アップデートに比べると霞むけど
テンプレートタグのelifは有難すぎ
djangoが楽すぎて他のフレームワークいじる気力なくなる
django使ってるのって、日本で10人ぐらい?
すごい優れたフレームワークだと思うので実践投入しようとしてるんだけど。
和書は1.0前のしかないし、Django Book 2.0すら和訳途中で頓挫してるし…
Googleグループも過疎ってるし。日本語で情報共有できないのが辛い。
英語だけどKindleの電子書籍はいっぱい売ってるし、海外フォーラムでは話題が多いんだよね。
逆に、今なら日本語Django界で名を挙げるチャンスなの?w
githubとかでもいいからDjango使っているプロジェクトとかソースコード読んで参考にしたい。
誰か情報共有してくれー!
そもそもPython使ってる人が日本に20人ぐらいしかいないから。
俺もいるから21人だな
いや、お前入れて20人だから
こういう地域による過疎フレームワークってどうやって情報共有すればいいんだろうね
英語読めれば問題ない
電気無ければただの箱的な?
57 :
50:2012/03/29(木) 16:31:42.56 ID:???
Django使うような奴らは国内なんかが住処じゃねーって!?
日本じゃ王道はRubyでRails。
Pythonなんかインデント言語って馬鹿にされて、
日本じゃ誰も評価されないDjango使う馬鹿は相手が世界ってことか?
面白いじゃないの!実践投入させてもらうぜ!
世界目指そうぜ
ケータイサイトとか作るんじゃなければいいかもね。
今さらケータイサイトとか作ってる場合じゃないけどな。
60 :
nobodyさん:2012/04/01(日) 02:28:54.90 ID:2batclMo
ええと…
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
django用にクラス作りなおすしかないんじゃないかな
モデルの中にdataクラスいれるのが単純かなぁ。(コンポジション?)
モデルにdataクラスへの入出力追加するだけだし。
63 :
nobodyさん:2012/04/01(日) 20:44:17.44 ID:1e7s1g7e
>>62 > モデルの中にdataクラスいれるのが単純かなぁ。(コンポジション?)
> モデルにdataクラスへの入出力追加するだけだし。
すみません、具体的なイメージが湧かないのですが
例えばinput_dataが
class input_data:
def __init__(self, name, value):
self.name = name # string
self.value = value # integer
こんなクラスだとしたら、これをプロパティにしたモデルクラスって
具体的にどうなるんでしょうか?
データベースへのアクセスはdjangoのORMを使うの?
それとも別に用意されてるの?
65 :
nobodyさん:2012/04/02(月) 23:50:34.00 ID:VGFPGSaK
>>64 ORマッパーが先に決まっているわけではないです
djangoのモデルクラスを利用して既にあるデータクラスを
そのまま使える方法があれば一番いいですし
それが無理そうなら別の方法を考える、という感じです。
昨日調べてたらSQLをそのまま発行することは出来るみたいなので、
資産の有効利用を優先するならそれもありかな、と少し考えています。
カスタムマネージャでなんとかなるかも
マネージャをゴリゴリ書く必要あるけれども
ただちっと面倒くさいよね何やるにしても
67 :
名無しさん:2012/04/03(火) 20:20:49.11 ID:1QQjv7Jc
寛解に至らない
68 :
nobodyさん:2012/04/05(木) 14:53:34.26 ID:zbL83UyR
偉い人へ:
djangoforms の BooleanField で checkboxを出すとHTMLが、
「ラベル □」になちゃうんだけど、「□ ラベル」にするのってどうやるの?
70 :
nobodyさん:2012/04/05(木) 22:30:34.63 ID:zbL83UyR
>>69 自分でテンプレートに展開するのって自由で素敵ですね。
トライしてみます。偉い人ありがと。
71 :
nobodyさん:2012/04/07(土) 16:34:57.81 ID:BeoWQwVe
72 :
71:2012/04/07(土) 16:35:33.15 ID:???
ファイル構成は下記のようにする予定です:
- 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
...
相対じゃなくて絶対でやるといいよ
相対 {% 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していくと綺麗に分離できるよ
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
検証してないけどこんな感じだよ
それと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 :
71:2012/04/08(日) 10:24:06.17 ID:???
77 :
nobodyさん:2012/04/08(日) 23:48:05.79 ID:Iqgx/7Sd
なんか馬鹿みたいな質問なんですけど
djangoでwebアプリを作ったときに
定数とか設定ファイルみたいなものを用意して
webサーバー起動時にそれを一度だけ読み込んだら
アプリが終了するまではその値をいつでも参照できるように
しておくことってできないですか?
ちなみにwebサーバーはapacheを使ってます
(apacheとdjangoをmod wsgiで連携)
そいうのはsettings.pyに書いとくといいです
settings.pyにHOGE="hoge"としておくと
from django.conf import settings
settings.HOGE
と言った感じで参照できます
79 :
nobodyさん:2012/04/09(月) 01:35:18.14 ID:8JTXJRql
なるほど!
ありがとうございました!
80 :
nobodyさん:2012/04/10(火) 22:13:14.47 ID:nA+GylzO
gae/p の blobstoreで、アップロードのついでに POSTした日本語が文字化けする障害って
まだ直っていないようですね・・
何年か前に Google-App-Engine-Japanに障害報告が上がってるのに。
仕事遅いなぁ中の人。
この障害への回避策って、Base64エンコードぐらいでしょうか?
gaeでdjango使うのしんどくない?
82 :
nobodyさん:2012/04/11(水) 10:56:01.11 ID:WgNPCZsm
83 :
nobodyさん:2012/04/13(金) 13:19:14.34 ID:0/eMv/lO
phpディスられてる割りにユーザ増えんね…
日本だとrubyに流れるんだろうね
2.x系は日本語の扱い面倒くさいし
ruby使ってる人=はてな民=常に上から目線みたいなイメージがあって、どうもrubyに触手が動かない
>>84 戦車に例えると
PHP4はT34/76
PHP5はT34/85
Railsはパンター
DjangoはタイガーI
って感じだからな。
JavaとかASP.NETはM4と言うか米軍
言語とフレームワークごちゃまぜなのがいただけない
>DjangoはタイガーI
重そうww
喩えが非常に良くないw
>rubyに触手が動かない
ひどい偏見ながらbeginとかendとか見た時にMSのマクロ系連想しちゃって受け付けなかった
pythonってweb以外にも科学技術計算とか沢山あるしね
数の暴力でアホみたいにライブラリ充実させて、負けることは絶対無いと思う
googleさんもいるし…
begin end はPascal系だろ
1.4でstartprojectしたら
project
-manage.py
--project
---settings.py
---wsgi.py
みたいになっててちょっと焦った
manage.pyの処理もちょっと変わったみたいで過去のプロジェクトそのままじゃ動かんかった
あとrunserverもwsgi指定できんのかな
settings.WSGI_APPLICATIONとかオプション出来てる
あとで調べてみよ
mod_wsgiだとDjangoがなぜかApacheで走らなくて
mod_pythonで動かしてる俺にはヤバいニュースだな。
ドキュメント通りにインスコしても何も表示されないんだよなー。
nginx+uwsgiマジオススメ
1.4かなり変わってんだな
urlテンプレートタグとGeneric View直すの面倒かった
100 :
nobodyさん:2012/04/18(水) 12:43:31.07 ID:Wype6WQ2
uwsgi調べてたら、タイムアウト指定する引数がharakiriとか出てきてワロタ
102 :
nobodyさん:2012/04/19(木) 20:46:19.69 ID:1eA2rign
申し訳なす、テンプレートの書き方なんですが、
例えばUserオブジェクトに属性email、アクセサemail()があるとき
{{ user.email }} とは書けるけど {{ user.email() }} だとエラーになります。
TemplateSyntaxError: Could not parse the remainder: '()' from 'user.email()'
これはどうしてなんでしょうか。
ドキュメントにはテンプレートエンジンが.(dot)を見つけたとき以下の順で評価を試みるとあるけど
関係してるのかなんだかさっぱり・・・
辞書の照合 (lookup)=>属性の照合=>メソッドの呼び出し=>リストをインデクス指定して照合
103 :
nobodyさん:2012/04/19(木) 21:00:09.93 ID:1eA2rign
勘違いしてました。Userオブジェクトには属性emailは存在せず、メソッドのみでした。
ということは、テンプレートに書くときはメソッド呼び出しにカッコはつけないということなのかな。
ぐぐってたら"丸括弧を付ける必要はありません"と書いてるページがあって
曖昧ではありますが、ひとまずそのつもりで進めてみますですm(_ _)m
104 :
nobodyさん:2012/04/26(木) 07:06:17.63 ID:RMLosHkb
先生、質問です。
FormPreviewを使って、プレビュー付きの登録ページを作っています。
普通はこんな感じ↓で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を呼び出すことはできないみたい。
何か良い方法ないでしょうか?
Djangoを、Ruby on Railsと比較した場合
良い所と悪い所を教えてください。
比べられるもんでもないけど
強いて言えば何か問題あったとき日本語情報沢山あるのがror
コード読んで解決するのがdjango
pythonかrubyの違いは好みだしね
テンプレートについて質問です。
{% for x in X %} ... {% endfor %}
の後に、もう1度
{% for x in X %} ... {% endfor %}
を記述したところ、前半は表示されるのに後半は何も表示されませんでした。1つのシーケンスは1回しか使えないのでしょうか?
2回も同じループさせるとか無駄じゃね?
1つのデータをテーブル表示 & グラフ表示 (のために JavaScript 埋め込み) したいのです。
>>107 FormフレームワークはDjangoが圧倒的に優秀
あとRailsはコマンドラインが糞遅い。
よってRailsを選択するメリットは皆無
>>109 そいうことやったことないから原因わからんけど同じループ回せられないならviewでレンダリングしたHTMLをテンプレートに渡してやったらどう?
render_to_stringとかで
せっかくテンプレートで役割分担してるんだから、まだXのコピーを用意する方がマシかも。
原因がわかりました。リストを渡したつもりがイテレータを渡していました。これは一度ループし終わると使えません。
バルス
117 :
nobodyさん:2012/05/12(土) 23:49:26.94 ID:Ss+1w/F4
職場の先輩がジュワンゴって発音するんですけど
どうしたらいいですか?
ド素人が今からDjangoを始めるなら1.3と1.4のどちらがオススメですか?
わかりません><
120 :
107:2012/05/13(日) 00:33:05.88 ID:???
レスありがとう
>>108 日本語の情報が少ないのはしょうがないですね。
でも公式サイトの英語のドキュメントは丁寧に書かれている気がする。
>>112 DjangoはMVCのViewの部分が使いやすいってことですか?
Rails遅いってのは聞いたことがあります。
大部分はRubyの原因かもしれないけど。
>>118 俺もDjangoこれからだけど素直に最新の1.4でいいんじゃないの。
覚えてる間に次のバージョンでるでしょうw
>>120 Djangoを学習している間にPyramidがメジャーになるのではという不安が。
123 :
nobodyさん:2012/05/13(日) 22:00:06.06 ID:XIq+bFUq
djangoで異なる複数のリクエスト間で
(巨大な)オブジェクトをメモリ上に共有する方法ってないですか?
オブジェクトが小さければキャッシュ機能でmemcachedを使う
というのが良さそうですが、非常に大きい(数ギガ)オブジェクトを
共有したいのです
(memcachedだとオブジェクト一つのサイズには上限があるので
無理だと思ってるのですが、そんなことないですか?)
小さなオブジェクトが大量にあるのではなく
一つの巨大なオブジェクトというのが外せない条件になってます。
具体的な上限もなくて、システム上に展開できるサイズなら
何Gでも利用したいとなっています。
やりたいことのイメージは
「データを加工せよ」というリクエストを一回だけ発行して(この処理は遅くてもいい)
それ以降は
「加工したデータをグラフAにして描写」
「加工したデータをグラフBにして描写」
「加工したデータを更に加工」
というリクエストを発行
というものです。
この加工データが巨大なオブジェクトになっていて
複数のリクエストに対して高速に処理するために
メモリ上に共有させておきたいのです
何か上手い方法ないでしょうか?
>>123 共有ストレージの考えだとネットワークI/Oがネックになるし排他も面倒だから
加工処理用にバックエンドサーバを設けるのがシンプルかな。
んでキューでなげるようにすれば「データを加工せよ」ってのもフロント自体はすぐ返せるし、
バックエンドのクラスタ化も容易。
あとはフロントでキャッシュさせるなりチューニングしていくかんじ。
125 :
nobodyさん:2012/05/13(日) 23:39:37.00 ID:XIq+bFUq
>>124 不勉強で申し訳ないのですが
キューというのはメッセージ・キューイングと呼ばれる機能のことでしょうか?
具体的なイメージがよくわかってないのですが、仮にやりたかったことを
加工リクエスト
APPサーバがDBからデータ取得
取得したデータを加工
加工データを保持(この方法がわからなかった)
結果(加工しましたというメッセージ)をレスポンス
グラフAの描写リクエスト
APPサーバが保持されていた加工データをグラフ化
結果(グラフ)をレスポンス
として書いた場合、124さんの方法はどのような流れになるのでしょうか?
加工データ自体はAPPサーバとは別に立てたバックエンドサーバに保持
するということですか? またその場合、加工データは異なるリクエスト間で
共有されるのでしょうか?
質問ばかりですみません
>>125 > 加工データ自体はAPPサーバとは別に立てたバックエンドサーバに保持
そう。仮に物理サーバはいっしょでも論理的に役割分担させる。
保持はGBオーダなデータ加工だし、mmapにしとけばファイルにも逃がせられる。
> するということですか? またその場合、加工データは異なるリクエスト間で
> 共有されるのでしょうか?
フロントへの加工リクエストに対して同じ対象の描写リクエストがだせるってことは
なんらかの識別子が存在してるはずで、バックエンドでも同様にやればなんとでもできる。
>>118 1.4から日付周りが変わってるから後々面倒なことになりたくなかったら1.4がいいよ
あと多対多のインスタンスもjoinするprefetch_related()とかもあって1.4を選ばない理由がない
generic viewがクラスベースになり、日本語サイトを参考に出来ないのがちょっとハマるかもしれないけど
mmapじゃね。pythonはよくは知らんけど。
>>126 返信遅れました
正直まだ理解できてない部分があるのですが
何とかがんばってみます
(オブジェクトがリクエスト間で共有できるということは
バックエンド用のプロセスが新たに走っている
ことになるのですよね?)
もし「ここを見ればいい」というサイトがあれば
教えていただけるとありがたいです
130 :
123:2012/05/16(水) 00:17:58.30 ID:???
で、djangoとrailsあなたたちはどっちが良いと思ってるの?
どっちもどっちじゃない?
134 :
nobodyさん:2012/06/17(日) 15:42:24.03 ID:VLPHimKQ
eclipseで実行して「It worked!」って表示されるけど、index.htmlが表示されない
なぜ表示されないのでしょうか(htmlファイル等はバグ等なく作成済み)
eclipse 3.7.2
django 1.3.0
135 :
名無し:2012/06/18(月) 10:55:27.84 ID:AXkhynzr
今人気の芸能人相性診断♪
楽しめる人気の占い発見しちゃいました。
いくつか質問に答えるだけであなたにピッタリの人がわかっちゃう。
気になったかたはチェックしてみてね。
http://232bs7.info/2/
137 :
nobodyさん:2012/07/07(土) 15:38:34.13 ID:KIWI0EBX
django1.3でmodels.pyの位置をデフォルトから変えたら
管理画面にmodelsに定義したクラスが表示されなくなってしまって
とりあえずadmin.pyのほうをmodels.pyと同じフォルダに移したら
また表示されるようになったんだけど
admin.pyとmodels.pyって必ず同じフォルダい入れてないとダメなの?
admin.site.register(SampleModel, SampleAdminCls)
これを
admin.site.register(hoge.SampleModel, SampleAdminCls)
みたいにしても意味なかった
インスコはrailsよりラクだよなw
な?・・・
pip install django
djangoって、単純なことでハマることが多い。
例えば、メールアドレスでログインさせたい時とか、
ユーザー登録フォームを複数ページに分割させて
最後にプレビュー表示&メール認証させるとか、
よくあるシステムを構築するのに一苦労する。
年月日の入力Widgetも、
年と日は数字だけのSelectなのに、
月の部分だけは「○月」とか表示されるし、
サクっとできて欲しい機能がいまいち不完全。
情報共有したがらないPython使いの気質のせいか?
Railsはアホみたいに情報あふれてる、そのくせバージョン違いで使えないのが多くて萎える。
Djangoはその点Railsよりマシなはずなのに、情報自体少ない。
Djangoの情報が溢れれば楽なのにな
143 :
nobodyさん:2012/07/27(金) 16:53:31.64 ID:cxcs/EZn
MySQlの設定するときに決まってpasswordが打ち込めなくなるんだけど知ってる?
escで逃げちゃってるからきっとadminサイト入れない。
>143
DjangoとSQLのバージョン書こう
つうか、設定ファイルに書けばよくないか
145 :
nobodyさん:2012/08/09(木) 00:46:11.95 ID:CMriqrOl
Djangoの勉強を始めたばかりなのですが、わからないことがあり質問させて頂きます。
現在、勉強がてらにユーザ認証を行う掲示板のようなものをつくろうと考えています。
Modelとしましては、Entryクラスがあり、その中に
・書きこみ日時
・タイトル
・本文
・書きこみユーザ
という情報を持たせたいのですが、書きこみユーザはどのようにフィールドを設定すればいいのでしょうか?
まだ勉強中なのですが、認証にはDjangoのauthモジュールを使おうかと考えているのですが、そのauthモジュールの書きこみユーザとの連携方法がわかりません。
よろしくおねがいします。
146 :
Wob9w:2012/08/09(木) 02:00:17.11 ID:???
投稿テストですよん...( ̄ー ̄)ニヤリ
HOFj4DjMraDFpyM
133941476137733アメフトォ(大嘘) そして面接へ
びっくりするほど過疎ってるね。
django、良いフレームワークなのに
なんでこんなに人少ないんだ?
そんなにPython使いが少ないのか、
そんなにPHPが便利すぎるのか。。
149 :
nobodyさん:2012/08/31(金) 19:16:38.98 ID:vOsjd0I6
日本でPython使ってる人なんて300人ぐらいしかいないもの
150 :
nobodyさん:2012/09/03(月) 10:36:41.32 ID:SqdE+p9Q
おひさしブリーフなんだけどまだデファクトなん?
152 :
nobodyさん:2012/09/09(日) 12:55:38.23 ID:So5recQR
最近pyramid使い始めた
153 :
nobodyさん:2012/09/10(月) 10:18:25.23 ID:SzEanAFy
CakePHPのセッションはUAと結び付けられているようですが、Djangoはそのような機能はありますか?
ブラウザのクッキーファイルが漏れて、セッションIDが奪われた時の対策としてどのようなものがあるか調べております。
154 :
nobodyさん:2012/10/01(月) 09:36:29.13 ID:Yqd8lXeW
URLFieldに入れる前に、URLFieldに入る値かどうかを確認したいのですが、そのようなことはできますか?
>>148 djangoさんが優秀すぎてグチるネタも無いからじゃないかな?
書きこんでも誰も答えてくれないので書き込みません
デプロイの定番ってどんな感じなのでしょうか
nginxとgunicornをネットではよく見かける
>>158 俺も知りたい。
nginxにしようか無難にapacheのままにしとくか迷ってる。
DBはPostgresが主流なのかな。
160 :
nobodyさん:2012/11/15(木) 09:02:26.77 ID:O5OuIbET
Djangoの勉強をしていたらDjangoにはまってしまい、Djangoでサイトを作りなおしております。
そこで1点悩んでいる部分があるのですが、現在制作しているサイトはPHPで制作しており、アクセス毎に携帯電話、スマートフォン、PC、IE6-8を切り替えて表示していたのですが、Djangoではこのようなアクセスの振り分けはどのように行うのが一般的になるでしょうか?
urls.pyに/sp/indexや/i/index等をはさみアクセスURL毎に端末を振り分けるとなると、Viewが端末毎に必要になりそうですし、全てのViewの中で端末のUAで振り分けるとViewの1メソッドが大きくなるのではないかと思っています。
携帯電話向けサイトだとAjaxなどが使えないためPCと遷移も変わるので、前者がいいのかとも考えているのですが、検索した際に携帯電話からPCサイトにアクセスすると見えなくなってしまうとも考えています。
私の考えをただ書かせて頂きましたが、一般的な方法や工夫されている方法などあれば教えて頂ければと思います。よろしくお願い致します。
Dajngoとか3日もあれば使いこなせるだろう
語ることすらないわ
じゃあ質問に答えてやれよ
>>862 フレームワークは3系に対応するまで覚える気になれません。
web2pyの対応を待ってるんだけど、Djangoはもう対応したのですか?
Djangoで初期にDBに保存しておきたい値はどのように設定すればいいのでしょうか?
DBに直接書き込む
Djangoには初期値を設定する方法は容易されていないのでしょうか?
そうなると、スクリプトを設置する際に、syncdbしたあとに書きこみスクリプトを実行し、そのあとにスクリプトを動かす必要があるという事でしょうか?
問答無用でselect文発行するソースでも書いてるのか?
>>166 >>168 逆に質問だけど
あなたが Django 使う前はどういう方法で DB の初期値を作っていましたか?
テストサーバーでデバグしたあと本番にデプロイするときに、スキーマはそのままで、
データだけ空(または必要最小限な初期値のみ&もちろんインデックスも最初から)に戻して
うpしてくれる機能があると便利かな、とは思う。
本番アップデートするたびに初期化されるのか。
胸熱
Djangoをレンタルサーバで使える業者ってありますかね? VPSで運用していると、OSやシステムのメンテナンスコストがかかってしまうため、レンタルサーバのように、メンテナンスは業者が行なってくれるところを探しています。
GAEで新しめのDjangoを使おうとすると、自分でDjango自体のメンテナンスが必要になるかと思います。そういったことも含めメンテナンスをしてくれる業者はありませんか?
納品してしまったら、こちらからはシステム以外のメンテナンスを余りしなくてもいいようにしたいです。
render_to_response()の第3引数のRequestContextというのが全く意味がわかりません
説明していただけませんか?
179 :
nobodyさん:2012/12/29(土) 03:06:45.67 ID:G1+BbVGH
馬鹿には無理
ModelFormを使ってフォームを作成しています。
UserForm( request.POST, request.FILES) のように、User登録フォームを作成しているのですが、passwordも入力された値を引き継がれるようです。これをパスワードのinputのvalueを空にしたいのですが、formsetの中身を操作するメソッドは用意されていないでしょうか?
formsetって書いてるけど、formでいいのかな?
form.is_validがFalseのときのエラー吐いたフォームでpasswordクリアしたいってことなら、
(TrueだったらHttpResponseRedirectを返すのがセオリーっぽいので
UserForm()には引数与えないだろうし)
javascriptのonloadイベントとかでクリアした方が楽かも。
どなたかsocial-pluginにmixiの対応をつけてくれませんか。
>>177 亀だけど、django/db/__init__.py中で
connections = ConnectionHandler(settings.DATABASES)ってなってるから、
settings.pyのDETABASES定義より下の行じゃないと
ダメなんじゃないかな。
fixtureを使ってUserを追加したいのですが、どのように書けばよいのでしょうか?
>>185 1〜2個User作って、manage.py dumpdataしてフォーマット見てみたら?
1.5全然来ないな
Southはpython3非対応?
189 :
房州:2013/02/17(日) 18:07:03.35 ID:???
俺は教えねえよ。俺は坊やの先生じゃないからな。お前もPy人なら自分で気づけ
PHP,Ruby(というよりRails)の次にDjangoに目をつけて勉強中だが、チュートリアルがわかりづらすぎて挫折しそう
一つ一つ追っていけばその段階ではわかるけど、仕様そのものが全く頭に入ってこない
>>190 他のフレームワークで開発していたら、置き換えるだけで理解できると思うんだが。
たとえばどの変がわかりにくい?
>>190 ModelのところだったらModelのドキュメントを読みながら進めたりするとわかりやすいよ
django-social-authがPython3使えないみたいなんだがほかにいいライブラリって無い?
OAuth2&Python3で
test
>>190 いまいち体系化されてないんだよな。
middlewareやらsignalやらclass-based viewやら、
ちょっと奥まったところにいくとソースみるしかなくなる。
でもdjango自体はまだずっとマシで
そのオープンソースアプリになると全くドキュメントなかったりするから。
pythonのこういうところが普及しない原因なんだろうな。
198 :
nobodyさん:2013/04/04(木) 16:51:07.95 ID:mlSWjspl
馬鹿には無理
200 :
nobodyさん:2013/04/04(木) 22:21:11.84 ID:hTCiyNuO
Django + jinja2 の環境を作っていてはまってます。
以下のように settings.py へカスタムフィルタを指定すると、
" 'str' object is not callable " のエラーになります。
-----------------------------------
JINJA2_FILTERS = {
'datetimeformat': 'utils.filters.datetimeformat',
}
-----------------------------------
で、クォーテーションを取って関数直にすると動きます。
-----------------------------------
JINJA2_FILTERS = {
'datetimeformat': utils.filters.datetimeformat,
}
-----------------------------------
なぜ??偉い人教えてください。
django1.4.5 jinja2-2.6 django_jinja-0.11
>>200 文字列はcallableじゃないからとしか言いようが。。
DjangoってO/R Mapperをすきなものに
簡単に入れ替えて使えるようになってますか?
203 :
nobodyさん:2013/04/05(金) 11:25:49.80 ID:F/TEgITk
>>202 できるけど、それならDjangoを使う意味がない
>>204-205 ありがとう
O/R mapperやテンプレートエンジンは何種類かから選べたり、
自由に入れ替えたりできるフレームワークもあるので、Djangoも
そうなってると思ったのですが、残念
iPhoneアプリ. Windowsアプリを売って生き残れ Ver 1.7 リンク数61
Http://qr. net/kh4y
django製の業務パッケージってなにか実例ないですか?
djangoアプリって日本好みなのは少ないね。
フレームワークとしては良いんだけどなぁ。
Webサイトは沢山つくったけど業務アプリ/パッケージはないな
そもそもWebサイトに比べてそんなに引き合いもないし
django1.3をscalaにポーティングしようかしら?
>>211 Scalaは人気ないし、JavaかC#に移植してほしい。
djangoを導入して、codezineのチュートリアルが終わりました。
データベースにMySQLを使っているのですが、テーブルの文字セットがlatin1_swedish_ciになっているせいなのか、
日本語のテキストを投入できないのですが、モデルの定義で症状順序を指定する方法はないのでしょうか?
オブジェクトにプロパティを追加した状態でシリアライズを行いたいのですがどのようにすればいいでしょうか?
django.core.serializers.serializeでシリアライズを行うと、オブジェクトに行った変更が維持されずにシリアライズされてしまいます。
215 :
nobodyさん:2013/09/18(水) 12:08:44.39 ID:gKUd666P
>>214 pickle.dump は?とか言ってみるテスト
217 :
nobodyさん:2013/09/24(火) 18:51:53.67 ID:qDsFnzSc
くっそー、すごく使いやすいし良いフレームワークだと思うのに、デプロイがうまくいかなくて腹立つ…
Djangoの問題じゃなくて、Apacheをうまくいじれない俺の問題なんだ…(;´д`)
途中でテーブルの列が変わったときと既存のテーブルとどうやって連携させるのかよくわからない
apatch捨ててnginx+uwsgiで行こう
>>217だけど
おk、nginxとuwsgiで行ってみる。
Python3用のチュートリアルはどこかにないでしょうか?
Django1.5の時点ではPython3って実験的サポートじゃなかったっけ
そうなんすか?
でもいまさらPython2系というのも後ろ向きな気がしますし…
Python2と3の違いなんて微々たるもんじゃん
227 :
nobodyさん:2013/09/30(月) 11:04:14.98 ID:4crUfdOT
まぁ1.4のドキュメント見ながら、1.5をいじっていけば良いと思うよ。日本語がいいならね。
Python2と3の違いは自分で何とかするなり、わからなかったらここで聞くなり。
228 :
nobodyさん:2013/10/05(土) 21:53:42.87 ID:rLQ0vSt3
social authがうまく動かなくてぐぬぬってなっとる
Django Social Auth、Django1.4だと
<a href="{% url socialauth_begin 'twitter' %}">ログイン</a>
で動くけど、1.5なら
<p><a href="{% url 'socialauth_begin' 'twitter' %}">ログイン</a></p>
じゃないと動かないのね…。
<p>タグなしだと動かんって、こりゃハマるわw
え?
232 :
nobodyさん:2013/10/12(土) 10:14:16.07 ID:katzcLBA
ごめん、pタグの有無が問題なんじゃなくて、 url って文字列をクォーテーションで囲むかどうかが問題なんだ。ごめん。
233 :
nobodyさん:2013/10/12(土) 10:15:05.96 ID:katzcLBA
urlじゃねぇや、socialauth_beginって文字列な。
いままでPHPのWebフレームワークしか使ったことないけどrailsは以外に簡単だった
Djangoは難しすぎる
まず、コントローラとViewとルーティングの3つすら全然わからない
それはいくらなんでもレベル低すぎないか・・・
236 :
nobodyさん:2013/10/25(金) 13:21:28.78 ID:upIsqz91
とりあえずわかんなくても、1.4のドキュメントのチュートリアルを一通りやればいいと思う。
で、それをもとに改変していけばそのうち慣れるんじゃない?
djangoで一からアプリ作るのは意外とわかりやすい。
でもアプリをいろいろ組み合わせようとすると大変なことになる。
djangoのバージョンも迂闊にあげられないし。
ショッピングサイトをsachimoベースで作ってるが、
一から自分で書いた方が早いんじゃないかと思えてきた。
>>237 DjangoはRailsにならって、レールに沿ったやり方で開発する前提でしょ。どんなフレームワークでもそうだけど、特に。
レールから外れるなら、フレームワークよりライブラリ組み合わせるのが普通だと思う。
>>237 それはDjangoというよりSatchmoの問題じゃなかろうか
他人の作ったAppを利用するのは思ったより面倒だからなぁ
240 :
234:2013/10/27(日) 11:53:23.07 ID:???
マニュアルのみてもわかんない
これMVCじゃないよね
MTV a.k.a MVC
>>240 マニュアルにViewがControllerだって書いてなかったっけ。
RailsやCakeを経て最近使い出したけどDjangoのORMって素敵だな
データベースありきじゃなくてちゃんとモデルが主役というか
今までDBの奴隷だったのが解放された感じ
245 :
nobodyさん:2013/11/12(火) 02:25:04.60 ID:W3f6KAuy
Django1.6ですよみなさん
>>245 settings.pyがシンプルすぎて目を疑った
でもuwsgiで動かそうとすると jingo ちゃんのせいでえらーになる
いつになったら1.4の翻訳は終了しますか?遅くないですか?
1.0からとか使ってる人は、大きな変更点さえ日本語であれば、後は英語でも困らないんじゃないか。
困ってるなら、あなたがやってもいいのよ。
別のフレームワークの日本語訳で忙しいから俺はやらないよw
なぜ英語も読めないのか?まずはそこを反省すべきではなかろうか
252 :
nobodyさん:2013/12/06(金) 20:28:11.08 ID:VQsT5HYM
Python3どうでしょう
とりあえず問題なくつかえてる
254 :
sage:2013/12/07(土) 17:27:24.49 ID:gAFb5wMQ
BaseUserManagerが継承しているManagerの中にmodelが定義されている
ドキュメント読んで疑問点が出たら django のソースを見るのが一番
たしかにそのあたりはちょっとややこしいけど・・・
ありがとうございます
こんなに早く回答がもらえるとは思ってなかった
1.5でカスタムユーザ追加されたらしいですけどその前はどうしてたんです?
カスタムユーザが便利すぎてもうprofileには戻れない
開発中にview内でprintで変数の中身を確認してるのですが本番環境でprintを消し忘れると
[Errno 5] Input/output error
で落ちてしまいます
これを回避する方法は無いのでしょうか?
logging使おう
それはloggingを使って変数の中身を出力して確認するという事なのでしょうか
それともprintが出力するはずだった情報をloggingが受け取る?ことでエラーが発生しないというなんでしょうか
あと、もし500を返すような致命的エラーが出たらメールで管理者に送る機能しか無くて、ファイルにlogとして残せないですよね?
メール送るところを自分で改変してログに残せそうな気もするんですがちょっと敷居が高過ぎます
http://www.18th-technote.com/post/5352244742/django-process-exception 今は上記を参考にviewで発生したエラーはprocess_exceptionで補足できてるんですが、
templateでもしエラーが起きたら補足できません
これデフォルトでなぜ付けないんだろうといつも疑問に思ってます
>>263 uWSGI だとまず
>>261 の状況が発生しないのだけど
使ってる環境(サーバ)はなあに?
ちなみに、printで標準出力に出したものは uWSGIのログにも出力されるよ
>>264 gunicornです
gunicornでログを生成するようにしたらprintの内容が出力されてエラーが出なくなりました!
Django本体のログのことしか頭に無かったです
ヒントありがとうございます 大変助かりました
266 :
nobodyさん:2014/01/25(土) 07:08:02.10 ID:HM5WIj95
このスレでuWSGIを初めて知ったのですが良さげなんでしょうか
Djangoと言えばnginx+gunicornの組み合わせしか知らないんですが最近気になってます
同じくこのスレでuWSGIを知ったのですが、uWSGI+nginxにするとapacheに比べて
どの辺が嬉しいんでしょう?
Appach
潤沢なメモリがあるサーバならApacheでも良い
枯れているし対応する拡張も多い
でも兎に角メモリイータでリソースに厳しい
uWSGI
馬鹿っ速い・先進的な機能がテンコ盛り・省リソースで動く
269 :
nobodyさん:2014/02/07(金) 23:56:26.65 ID:NNxPDh1r
railsだのDjangoだのいじってる人はApache使わない印象
pyodbc.connect("DSN=hoge")
を含む関数を
manage.py shellから呼んでも通るんですが、
本番環境だとApacheがsegmentation fault(11)を吐きます
上記関数を含まない他のviewは問題なく表示できます。
どこらへん調べたらいいですか?
Apacheでmod_wsgiをdaemonモードで使っててDjango1.6です
ここえらい過疎だな・・・
RoRに比べて日本語の情報も少ないし、Django弄ってる日本人少ない?
RoRに浮気したいけど、初心者に厳しいとも聞くし
>>271 問題ないから話題がないとも。
閉鎖的な日本ではログインシステムが標準てのはいいかもね。
Web用にPython選ぶメリットって今は殆ど無いからね
274 :
nobodyさん:2014/02/24(月) 14:39:31.70 ID:Grf2Q2cg
Pythonは初心者がマルチバイト文字で詰まって投げ出してるイメージ
英語圏は楽でいいよな
あるわ
今日からDjango始めてみたんだけど、Viewの部分が面倒くさくない?
>>276 何と比べてるのかわからないが、標準View使えば。
面倒くさいと感じたことはないな
そもそもDjangoに限らずViewの部分なんて難しい処理とかないじゃん
Pythonで変数が設定されているか調べるにはどのようにすればいいですか?
PHPでいう、if(isset($var)){}のような事をしたいのですが
ごめんなさい、スレを間違えました
以下良くあるmysiteで書くけど、
Viewってmysite/mysite/urls.pyに毎回わざわざurlpatternsを書かないといけないの?
(r'^myapp/$', 'myapp.views.index')とか
また、アプリケーションとしてmyappを追加した場合、mysite/myapp/views.pyに毎回def index(request):context="" return HttpResponse(render())みたいな長ったらしいのを書かないといけないんでしょ?
で、テンプレートはmysite/template/myapp/以下にindex.htmlとして入れると
Smartyみたいに$view->assign();や$view->display()だけでいけるように設定できれば楽なんだけど
Djangoの設計概念の理解不足だと思う
とは言えドキュメントにこのあたりは纏まって書いてないので
ひと通りやらないと分からないのはちょっと不親切だったりする
まず"Djangoアプリ 再利用" とかでググってみておくれ
urls.pyにまとめてurlを書く利点はページのURL配置に自由度を持たせる為
viewの指定については、django.shortcuts.render でも使えばいい
それか同じように毎回書くのが面倒ならそのラッパを好きに自分で作る。
テンプレートの場所も設定で変更できる。
開発時の問題ならシンボリックリンクでも貼っておけば良い。
なるほど、ちょっと調べてみるね
それともう一つ質問あるんだけど、
例えばHTMLのフォーム(form.html)からanalyze.pyへ移動し、
そこでフォームのバリデーションなんかしたりしてから別のHTMLページに飛ばしたい場合は、
<form action="./analyze.py">でどのように指定すればいいの?
例えテンプレートform.htmlがanalyze.pyと同じディレクトリにあっても相対パスが適用されないよね?
CSSやJSの外部ファイルの読み込みの際にワケが分からなくてハマったんだけど
コレは/static/ディレクトリを作成し、その中に入れてなんとかなった
Djangoではマニュアルとか読んでてもModelがDBからみの事をいうような書かれ方してるけど、
自分は外部ライブラリなどもModelだと認識してる
analyze.pyのような関数やクラス群はどこに置いて、どのように指定すればいいの?
PHPはファイルの場所と名前からURL情報が作られる。
まずこれを綺麗サッパリ忘れてくれ。
Djangoでは まずURLを登録し、そのURLで実行する処理を指定する。
例えば urls.py に /hoge/ へのアクセスは myapp/views.py の hoge(request) で処理せよという感じで指定する。
換言すれば、urls.py に登録ないURLへはアクセスできない。
Formの処理については 日本語のドキュメントにサンプルがある。
それをまず真似て作ってみる。いきなりDjangoの流儀と違うやり方で実装しようとしないでまずはサンプルの理解から。
別のページに飛ばすのは redirect を使えばよいし、
analyze.pyに書いた処理でバリデーションしたければ、Formのバリデート処理に、analyze.py を import して使えばよい。
また、<form action="xxx">にForm表示とは違うURLを指定することも可能だが、そのURLは当然 urls.py に登録済みでなければ駄目だよ。
>自分は外部ライブラリなどもModelだと認識してる
違う
教えてくれてありがとね
analyze.pyを{{STATIC_URL}}内に入れてaction部にanalyze.pyを記述しフォームを実行したらanalyze.pyのダウンロードが始まったw
なるほど、Djangoって結構ガチッとしたFWなのかな
FWはZendFrameworkくらいしか使ったことないんだけど、アレは最初のコントローラー部で迷った以外はライブラリ感覚で使えたし、フォームなんかも無視して自分で実装しても問題なかった
対してcakePHPはガチッとしてると聞いた
ライブラリ感覚ならTurboGearの方がいいとか数年前読んだけど
自分としては、PythonはApache連携やら、フォームを作成後ブラウザからスクリプトを起動させるのが面倒くさいから、Django使おうって位の軽いユーザーのつもりだったんだけど、思った以上にブラウジングが面倒くさいなぁと
もうちょっと頑張って学習してみる
><form action="xxx">にForm表示とは
>違うURLを指定することも可能だが、
>そのURLは当然 urls.py に登録済みでなければ駄目だよ。
ココがちょっと分かんないんだけど、
mysite/libs内にanalyze.pyを入れたとして、
それらのディレクトリ、ファイルなど外部ファイルにアクセスするのにわざわざURL登録しないといけないの?
HTML,つまりViewを必要としないpythonファイルをディスパッチ、レンダリングするというなら、その方法が見当も付かないんだけど...
混乱してるなぁ...うぅむ...
{{STATIC_URL}} 静的なファイルを置く場所 JavaScript cssファイル 画像ファイル etc
{{MEDIA_URL}} ユーザがアップロードしたファイルを置く場所
上記にプログラムファイルを置いても駄目。
既に経験済みの様だが、プログラムファイルは実行されずダウンロードされてしまう。
>HTML,つまりViewを必要としないpythonファイルをディスパッチ、レンダリングする・・・
urls.pyには正規表現が使える。
たとえば url(r'^hoge/(?P<pagename>[a-zA-Z0-9]+).html$', 'mysite.views.nonview', name='nonview')
と定義すれば /hoge/foo.html や /hoge/bar.html といったURLを mysite/viers.py の nonview関数で処理できる
nonview関数ではpagename引数に入ったHTMLファイル名を 任意のディレクトリから呼び出し
HttpResponse 等で出力すればよい (もちろん任意のテンプレートでラップしてもよい)
または 静的HTMLの表示に全くDjangoを通さないくて良ければ {{STATIC_URL}} 以下にHTMLファイルを配置し
表示処理は HTTPServer にまかせてしまう
毎回毎回本当にありがとね
View部分の面倒くさい記述は教えてもらったので検索したりして何とかなった
慣れないとDjangoって難しいんだね
今んとこディスパッチャの部分が特に
皆自分で学んでいったんだろうけど、凄いなぁ
自分としては、
foo.htmlフォームの実行
-> analyze.pyよりフォームで送られてきたデータのバリデーションとデータベース接続、登録
-> リダイレクト
-> bar.html
というごく一般的なフォームの挙動を行おうとしただけでこれだけ悩んでる
{{STATIC_URL}} 静的なファイルを置く場所 JavaScript cssファイル 画像ファイル etc
{{MEDIA_URL}} ユーザがアップロードしたファイルを置く場所
上記にプログラムファイルを置いても駄目。
既に経験済みの様だが、プログラムファイルは実行されずダウンロードされてしまう。
>nonview関数ではpagename引数に入ったHTMLファイル名を 任意のディレクトリから呼び出し
>HttpResponse 等で出力すればよい (もちろん任意のテンプレートでラップしてもよい)
と言う事は、Djangoでは/lib/などの外部ファイル(admin.pyやsetting.pyなどではなく、myfunctions.pyのようなもの)は使えず、処理を行いたい挙動はnonview関数内にPythonスクリプトを書いていくということになるんだね?
なるほど
質問者はMVCが理解できていない
Two scoop of django 1.6のkindle版マダー?
291 :
nobodyさん:2014/02/26(水) 22:48:12.48 ID:LOhj6Qup
例えば日毎に複数モデルからデータを持ってきて表示するカレンダーを作る場合、
Manager:date等を指定してのクエリ(戻り:QuerySetや集約後のデータ)
View:Calendar.monthdatescalendarのような構造の配列を作る
それぞれのモデルのManagerを呼んでデータ取得
配列にはモデルから取得したデータをまとめた辞書を入れる
Template:forループで上の配列を回してhtmlにする
こんな感じで合ってますか?
不安な点:
・クエリを書く場所(View?Manager?)
・View内でコードを書く場所
今はgetメソッドに直接書いていますが、getは弄らずにメソッドに書いてそれをテンプレートから
呼んだ方が(view.hoge的な)いいのでしょうか?それとも別ファイルに関数を書くべきですか?
・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
※formは軽くタグとか付けられますよね
ネットでサンプルを探してはみたのですが、今一これが正解!的なコードが見つからなくて・・・
あと設計の参考になりそうな良いサイトってありますでしょうか?
>・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
Template内で → View内で
でした
単純なデータ取得、たとえば pkを指定してレコード取得や一覧取得はView
ビジネスロジックと言われるような中枢を成す処理はmodelまたはlogics.pyとか別ファイルにする
Djangoのポリシーではテンプレート内でデータは加工しない
テンプレートはデザイナーが触るものでプログラマーが触るものではない
よってデータの加工はviewでやる
getメソッド?なにそれ
>>291 俺ならインタフェースだけ合わせて、template内で同じように見えるようにしてiteration。
<select><option value="foo">bar</option></select>
のような形を作るにはどのようにすればいいのでしょうか?
class yes(forms.Form):
bar = forms.ChoiceField(
widget = forms.Select()
)
で、セレクトバーは出たんですが、その後の<option>の指定方法がわかりません
自分はHTMLで{{form.bar}}のようにしています
すみません、barじゃなくfooでした
フォームでPOST値を送信する場合って、
PHPの場合は、送った先が$_POST['foo']とかを処理するけど、
Djangoの場合は、処理するページ(<form>のあるページ)がPOST値を処理してから次のページへリダイレクトって仕組みだよね?
送った先(次のページ)がPOST値を取得したり表示する場合はセッションを使わないといけないんだよね?
>>298 そんなことない。作り方次第。
ただ自然に作ると、
>>292 getはクラスベース汎用ビューにあるgetのオーバーライドです
ネットの参考サイトがそのような書き方をしていましたので
requestからURLパラメータ欲しいから・・・と思いましたがView.requestでどこからでも取得出来るんですね
となるとコンテキストに追加するのはget_context_dataがいいのかな
あとテーブル操作はカスタムManager、レコード操作はModelと意識してます
>>294 フォームで言う、form.messageみたいなのを作るって事でしょうか?
ネットでもいろんなやり方があって、もう設計に拘らず適当でもいい気がしてきました・・・w
しかし関数ベースとクラスベースの情報があってぐぐり難いですね
304 :
nobodyさん:2014/04/08(火) 07:57:45.66 ID:Gp3QMMMl
request.session['hoge'] = 0
sqlite使用で上のコードを書いただけで 200msくらいブラウザの反応が遅くなるから、
なんとなくmysqlに変えてみたらなぜか早くなりました(300ms→100ms)
※他にも簡単なSQLありますが、上のコードが無い場合は両者反応速度一緒ぐらいです
しかしdebug_toolbarで見るSQLの実行時間は常に変わらず0or1ms
あとtime.clockでもコードの実行時間見てるけど、なんか変です
上のコードがあるメソッドを、clockで囲ってコード有無・DB変更して計測しても、常に30ms未満
なぜでしょうか・・・orz
django1.6.2 python2.7 windows7
計測何回やったんだ
sqliteはファイルだからIOがとかなんとか
mysqlもファイルですよ
>>305 ついでにtimeitとやらで計測してみました
t = timeit.Timer("""s = SessionStore('key')
s.save()""", 'from django.contrib.sessions.backends.db import SessionStore')
logging.debug(t.timeit(10))
[ sqlite3.8.3.1 ] 約2800ms VACUUMすると遅くなって3800ms・・・
QUERY = u'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date"
FROM "django_session" WHERE ("django_session"."session_key" = %s AND "django_session"."expire_date" > %s )' -
PARAMS = (u"'z9q43506rahjmcheld9e0m9p4motsbwa'", u"'2014-04-08 13:53:36.183000'")
QUERY = u'BEGIN' - PARAMS = ()
QUERY = u'UPDATE "django_session" SET "session_data" = %s, "expire_date" = %s
WHERE "django_session"."session_key" = %s ' - PARAMS = (u"'NDFkMjdiMjI5NWUzYjliZWIzNGQwMGI1YzA1ZDcwMWQ5MjNmZWVlNDp7fQ=='",
u"'2014-04-22 13:53:36.190000'", u"'z9q43506rahjmcheld9e0m9p4motsbwa'")
UPDATEはdebug_toolbar上では1or2ms。トランザクションの関係で計測上手く出来ないのかも?
UPDATEをSQLiteManagerから直接実行しても300msかかってました
[ mysql5.6.17 ] 約140ms
SELECT ??? FROM `django_session` WHERE (`django_session`.`session_key` = 'z9q43506rahjmcheld9e0m9p4motsbwa'
AND `django_session`.`expire_date` > '2014-04-08 13:59:03' )
UPDATE `django_session` SET `session_data` = 'NDFkMjdiMjI5NWUzYjliZWIzNGQwMGI1YzA1ZDcwMWQ5MjNmZWVlNDp7fQ==',
`expire_date` = '2014-04-22 13:59:03' WHERE `django_session`.`session_key` = 'z9q43506rahjmcheld9e0m9p4motsbwa'
しかしsqliteのアダプタって無駄が多いんですね
さすがに差が開きすぎな気もするので、単に私の環境のsqliteがおかしいのかも・・・
307 :
306:2014/04/09(水) 06:33:27.18 ID:???
すみません、どうやら単純にデータがSSDにあるかどうかの問題でした…
sqliteファイルをSSDへ移したところ、2800ms→230msまで縮まりました
しかしHDDとSSDでここまで違うとは…
馬鹿には無理
nginxで使う場合uwsgiとgunicornでは、どちらがオススメでしょうか?
そんな質問してるようじゃおまえにはまだはやい
uWSGIの方が色々出来て便利だけどドキュメント読めないと詰むかもわからん。
Emperor + Zerg で Graceful reload とか。
バカげた質問である
Djangoに入ってるsimplejsonってUNICODEを期待してるの?
どなたかいらっしゃたらちょっと助けて下さい。
DjangoのViewのとある関数で、別の関数の中で使った変数を使うことはできますか?
下の例なら、関数Aの中で関数BのgetHAMという変数を使いたいです。
(例)
def A(request):
fee = int(getHAM) + 1
return fee
def B(request):
getHAM = str(1+1)
そんな設計絶対に許さないけど、どうしてもというならセッション使おう
やっぱり許せん
ステートレスって言葉を勉強してこい
315です。
request.session['getHAM']みたいな感じで解決できたようです。
どうもありがとうございました。
ステートレスの意味が調べました。
ですが私はOAuth1を使ったTwitterアプリを作ろうとしていて、
views.pyのTwitterへリダイレクトする関数とTwitterからのcallbackを受ける関数はどうしても違うものになるかと思います。
プログラミング自体が初心者でして、不快にさせていたら申し訳ないです。
>>319 ごめん調子に乗っただけ
oauth か。oauth みたいにステート保持する必要あるならセッション使う
プロジェクトとアプリケーションがいまいちわかりません
djangoではプロジェクトの下に異なるアプリケーションを作成する前提なんですか?
2ch掲示板のクローンを作りたいならmanage.py startapp bbs2chclone
rssリーダーを作りたいならmanage.py startapp rssreader
って1つのプロジェクトの中に作っていくスタイルがdjangoですか?
PHPのMVCから流れてきたのでこのへんがよくわかりません
startappでviews.pyも一緒に作られないのは何故ですか?
作られるよ
1.6と1.7では作られませんよ
バージョンいくつの話ですか?
>>321 二つ目のアプリを別プロジェクトで作ってもいいけど、運用で一緒に動かせるように。
標準で入っているアプリも使っているだろ。
アプリ単体で作ってもいいけど、すぐ動かせるようにプロジェクトをジェネレートしているんだと思う。
配布目的ならやっぱりプロジェクトはわけたほうがいいですよね
旧態依然とした社内で布教したく、業務システムのプロトタイプを作ってみました。
そこに入れるデータがExcelにしかないのですが、これをインポートするのにxlrdライブラリでExcelを読みつつ、django用に書いたmodelクラスのインスタンスを生成してはsave()を走らせるコードをちまちまと走らせています。
これでも要件は満たすのですが、皆さんだったらどうしますか?
328 :
nobodyさん:2014/09/25(木) 18:09:06.55 ID:aYh5A6Fe
Djangoでおすすめのプラグイン教えて
自分はdjango-debug-toolbarとpaginationくらいしか使ってないけど
>>328 paginationとかライブラリとしてしか使ってなかったわ。
330 :
nobodyさん:2014/09/26(金) 03:12:29.74 ID:uLtl5abZ
フォームでアルファベットのみとかしたい場合どうすればいい?
cleared_data[].isalpha()とかしたら、アルファベット以外でもすり抜けてしまうんだけど
クライアントサイドとサーバサイドでバリデーションかけろよ
333 :
nobodyさん:2014/09/26(金) 09:36:46.32 ID:uLtl5abZ
>>331 は?
サーバサイドでは上記のように試したんだけど出来なかった
内部で変換されて出力時にまた変換されてるのかな、と
どういう風にチェックしたらいい?
DjangoはガチガチのFWだから、PHPみたいにprintやvar_dumpしても出てこないから分かりにくい
>>332 ごめん、cleared_dataじゃなく、cleaned_dataの書き間違いだった
どうやって見るん?
pdbとか?
自分はdjango-pdb見たが分からんかった
【IT】「bash」シェルに重大な脆弱性、開発元がパッチ公開 [14/09/25]
http://daily.2ch.net/test/read.cgi/newsplus/1411612522/ 多くのUNIXおよびLinuxのユーザーに利用されている「Bourne Again SHell(Bash)」に重大な
セキュリティホールが発見された。このセキュリティホールはBashによる環境変数の評価方法に起因している。
ハッカーは特別に作成した変数を用いてセキュリティホールを突き、シェルコマンドを実行できる。これにより
サーバはさらなる本格的な攻撃に対して脆弱な状態となる。
(略)
このセキュリティホールを抜本的に解決するには、脆弱性のあるBashを新しい安全なバージョンに置換する
必要がある。米国時間9月24日朝の時点で、Bashの開発元からすべての現行バージョンをアップデートする
パッチがリリースされている。また、DebianとRed Hatはパッケージ化されたパッチを公開している。
ディストリビューターからのパッチを待たず、アプリケーションに対する危険な入力を排除したり、シェルを
呼び出す古いCGIスクリプトを無効化して新しいスクリプトに置換したり、Bash自体を別のシェルに
置換するなどの回避策を実施することも重要だ。
>>333 シェルで見る。
ブラウザでしか操作できないならログ。
それもわからないならraiseしちゃうとか。
336 :
nobodyさん:2014/10/02(木) 20:04:40.32 ID:MmprTnHx
models使ったスクリプトで、データベースに問い合わせて得た結果セットをJSON化したいんですが、
...is not JSON seralizableとなります
どう処理すればいいですか?
ちなみに、
>>>foo = bar.objects.all()
>>>print type(foo)
<class 'django.db.models.query.ValuesQuerySet'>
>>>print json.dumps(foo)
で上記のエラーが出ます
338 :
nobodyさん:2014/10/03(金) 08:34:38.15 ID:L6uW93jV
>>>a = ['ringo','リンゴ']
>>>print a
[{'ringo':'\xe3\x82'}]とか\u73feとかで表示されますが、これを日本語でちゃんと、'りんご'と表示させるにはどうすればいいですか?
また、階層が深いと[<ringo: ringo object>]のようになったりもしますがこれの対処法も教えてもらえないでしょうか?
>>338 870 デフォルトの名無しさん sage 2014/10/02(木) 11:43:57.63 ID:9jKc/G7B
CUI環境で
>>>a = ['ringo','リンゴ']
>>>print a
[{'ringo':'\xe3\x82'}]とか\u73feとかで表示されますが、これを日本語でちゃんと、'りんご'と表示させるにはどうすればいいですか?
また、階層が深いと[<ringo: ringo object>]のようになったりもしますがこれの対処法も教えてもらえないでしょうか?
PHPのvar_dump()みたいにオブジェクト内でもデータを確認したいのですが
django関係なくね?
まずは python2 か python3 かはっきりしろ
ringo クラスに __repr__ メソッドを追加しろ
>>340 関係ないと言いつつ的確に答えてて濡れた
Djangoってさ、フォームのセキュリティに関して自分たちは何も対策することない?
基本的にO/Rマッパー使ったり、Formsクラスや{{ csrf_token }}使ってる限り
セッションハイジャックに関しては分かんないけど
任せとけばいいよ
テストみてみ
すごいから
悪いんだけど、そのテスト結果ってどこに書かれてる?
django のテストコード見てみろ
結果は実行してみろよ
なるほど、ありがと
安心して使うことにする
ジャンゴ、ジャンゴ
DjangoとcakePHPってどっちが良い?
サーバ公開ならApatcheと簡単に連携できてメンテも簡単なcakePHPかなと思うけど
351 :
nobodyさん:2014/10/05(日) 23:02:12.14 ID:5shIACe9
Djangoってさ、views.pyもだけど、特にforms.pyがとんでもなく長くなってしまうと思うけどどう対処してる?
フォーム登録のあるページを5ページでも作ろうものならその度にclass作って一気に長くなって管理が面倒くさいんだけど
views.py が大きくなる時は、
views/__init__py
views/foo.py
views/bar.py
みたいにファイル分割して __init__.py からインポートするようにしてるよ。
__init__ で * 展開する奴らを見ると殺したくなる
'views.foo' でいいだろ
は???
>>351 modelForm使ってるので書くことほとんどない。
あと、対応するmodelのファイルに一緒に入れてる。
models.pyは使ってない。1model1ファイル。
modelが中心だと考えている。
forms.IntegerFieldにmax_length入れたら怒られたんだけど、自分はセキュリティ観点上フォームには必ず文字数制限を入れたい
しかも今回の場合は郵便番号の前半と後半部分なので3文字とかしか必要ないんだけど
もちろんクライアントサイド側でバリデートはさせるけど
どうしたらいいですか?
>>> f = ComboField(fields=[CharField(max_length=3),IntegerField()])
>>> f.clean(123)
123
>>> f.clean(1234)
Traceback (most recent call last):
django.core.exceptions.ValidationError
>>> f.clean("aaa")
Traceback (most recent call last):
django.core.exceptions.ValidationError
>>> f.clean("567")
567
>>> f.clean("5678")
Traceback (most recent call last):
django.core.exceptions.ValidationError
うわ、そんなやり方しないといけないの?
widgetとかCharFieldの方に入れるのかな?
何か複雑そうだなぁ
教えてくれてありがと
>>357 django.core.validators.MaxValueValidator を使えばもう少し簡潔に書けるかも。
少なくとも、フィールドの型を本来のものと変える必要はなくなる。
使い方 等々、上のパッケージとクラスでググるとドキュメントが出てくるよ。
361 :
nobodyさん:2014/10/08(水) 10:18:30.84 ID:L8w+mBMY
views.pyを複数ファイルに分割すると
各viewで同じようなimport文を書くことになると思うんですけど
これスマートにできませんか? そういうもの割り切るしかないですか?
それはしゃーない
よくある、ユーザー登録する際にメールアドレスを登録してもらって、
そのメールに1回メールを送ってから、記載されたURLを開いて
存在確認が出来たらユーザー登録を許可するってのをやりたいんだけど、
contrib.authでコツコツ実装する感じですかね?
なんか、よくあるパターンなので、いいモジュールがあればと思ったんですが。
和書なら関係者の疑いもわかるが、洋書で
ステマ言われるとは思わんかったわw
370 :
nobodyさん:2014/10/16(木) 12:01:06.28 ID:QKioo2JW
Django Version : 1.6.2
price = models.PositiveIntegerField(max_length=10, blank=True)
としてsyncdbした後MySQLAdminで確認すると、属性:UNSIGNEDとNULL:いいえとなってる
何でだろ?
自分は空白を許して、正の整数だけで登録したつもりなんだけど
どう変えればいいですか?
>>370 あ、空白か。空白はcharだから、charを継承したFieldを作らないとじゃないか。
質問させてください
Django+MySQLでトランザクションを実装しようと考えています
最初1.4の日本語訳を読んでいて'django.middleware.transaction.TransactionMiddleware'をsettings.pyに追加したところエラーが出ました
そこで調べているうちにバージョン1.6からトランザクション周りが変わったとのことを知りました
https://docs.djangoproject.com/en/1.6/topics/db/transactions/ 英語での解説を読むのですが、'django.middleware.transaction.TransactionMiddleware'についての記述が見当たりません
これはもはやsettings.pyに書く必要はなくなったのでしょうか?
Formって、Class内に一つでも使わないもの入れたらis_valid()通らないのな
ハマった
例えば
a = forms.CharField()
b = forms.CharField()
でHTML内でaのフォームだけ使った場合とか
クソ仕様だな
>>374 require=Falseにしとけよ。
馬鹿には無理
The Zen of Python
378 :
nobodyさん:2014/10/21(火) 18:09:20.88 ID:no1UJMbX
ManyToManyにしないといけないところをForeignKeyにしてたわ
やりなおしかったるいからsqliteファイル直接いじって頑張ってみよう。。
formsって使ってる?
馬鹿には無理
gae上でdjangoを学ぼうと、eclipseにPyDev
入れてみました。
しかし、gaeに展開できるdjango1.5のプロジェクト
をうまく作れません。
ググってみたのですが、djangoのバージョンが
古いものばかりです。
どこかお薦めサイトがないでしょうか?
nonrel公式のチュートリアル見ればできるだろ
今どきEclipseとかJavaでも使わんのではないか
PyCharmにしとけ
emacsでいいんじゃない?
386 :
nobodyさん:2015/02/16(月) 08:45:20.39 ID:SjRYYRjh
387 :
nobodyさん:2015/02/22(日) 06:23:30.03 ID:OQN9yj0H
馬鹿には無理