【Python】Webフレームワーク Djangoスレ Part2at PHP
【Python】Webフレームワーク Djangoスレ Part2 - 暇つぶし2ch175:nobodyさん
12/12/19 00:56:44.87
>>174
GoogleAppEngine

176:nobodyさん
12/12/20 08:11:54.79
GAEで新しめのDjangoを使おうとすると、自分でDjango自体のメンテナンスが必要になるかと思います。そういったことも含めメンテナンスをしてくれる業者はありませんか?


納品してしまったら、こちらからはシステム以外のメンテナンスを余りしなくてもいいようにしたいです。

177:nobodyさん
12/12/26 17:54:39.43
Django1.4を利用してDjangoの勉強をしております。
複数のデータベースを使った実験をしようと、
URLリンク(www.ianlewis.org)
こちらを参考に特定のモデルの振り分けを試してみたのですが、
django.core.exceptions.ImproperlyConfigured: Error importing database router TestRouter: "cannot import name connection"
というエラーが出てしまいます。

検索すると、
URLリンク(stackoverflow.com)
ここがみつかり、DATABASE_ROUTERSの上の行に
from django.db import connections
を追加するとエラーが出なくなります。
ですが、setting.pyの最上部に追加すると同じエラーが出ます。

これはなぜDATABASE_ROUTERSの上の行でなければいけないのでしょうか?

178:nobodyさん
12/12/27 15:14:46.35
render_to_response()の第3引数のRequestContextというのが全く意味がわかりません
説明していただけませんか?

179:nobodyさん
12/12/29 03:06:45.67 G1+BbVGH
馬鹿には無理

180:nobodyさん
13/01/05 18:01:55.06
アプリ起業 iPhone C#まとめ Ver 1.5
URLリンク(tinyurl.) com/9w97424

181:nobodyさん
13/01/07 12:07:01.80
ModelFormを使ってフォームを作成しています。

UserForm( request.POST, request.FILES) のように、User登録フォームを作成しているのですが、passwordも入力された値を引き継がれるようです。これをパスワードのinputのvalueを空にしたいのですが、formsetの中身を操作するメソッドは用意されていないでしょうか?

182:nobodyさん
13/01/09 01:21:05.79
formsetって書いてるけど、formでいいのかな?
form.is_validがFalseのときのエラー吐いたフォームでpasswordクリアしたいってことなら、
(TrueだったらHttpResponseRedirectを返すのがセオリーっぽいので
UserForm()には引数与えないだろうし)
javascriptのonloadイベントとかでクリアした方が楽かも。

183:nobodyさん
13/01/12 08:19:26.89
どなたかsocial-pluginにmixiの対応をつけてくれませんか。

184:nobodyさん
13/01/18 01:04:30.47
>>177
亀だけど、django/db/__init__.py中で
connections = ConnectionHandler(settings.DATABASES)ってなってるから、
settings.pyのDETABASES定義より下の行じゃないと
ダメなんじゃないかな。

185:nobodyさん
13/01/19 09:59:59.34
fixtureを使ってUserを追加したいのですが、どのように書けばよいのでしょうか?

186:nobodyさん
13/01/23 01:18:22.02
>>185
1~2個User作って、manage.py dumpdataしてフォーマット見てみたら?

187:nobodyさん
13/01/23 13:23:40.95
1.5全然来ないな

188:nobodyさん
13/02/12 20:07:21.93
Southはpython3非対応?

189:房州
13/02/17 18:07:03.35
俺は教えねえよ。俺は坊やの先生じゃないからな。お前もPy人なら自分で気づけ

190:nobodyさん
13/02/22 18:16:32.21
PHP,Ruby(というよりRails)の次にDjangoに目をつけて勉強中だが、チュートリアルがわかりづらすぎて挫折しそう
一つ一つ追っていけばその段階ではわかるけど、仕様そのものが全く頭に入ってこない

191:nobodyさん
13/02/23 13:45:14.87
>>190
他のフレームワークで開発していたら、置き換えるだけで理解できると思うんだが。
たとえばどの変がわかりにくい?

192:nobodyさん
13/03/06 22:36:17.01
>>190
同意

193:nobodyさん
13/03/11 00:25:01.26
>>190
ModelのところだったらModelのドキュメントを読みながら進めたりするとわかりやすいよ

194:nobodyさん
13/03/11 00:26:00.34
django-social-authがPython3使えないみたいなんだがほかにいいライブラリって無い?
OAuth2&Python3で

195:nobodyさん
13/03/22 18:57:26.97
test

196:nobodyさん
13/03/25 19:52:29.13
おもろいけどすぐ飽きる
URLリンク(portal.nifty.com)

197:nobodyさん
13/04/04 12:10:00.96
>>190
いまいち体系化されてないんだよな。
middlewareやらsignalやらclass-based viewやら、
ちょっと奥まったところにいくとソースみるしかなくなる。

でもdjango自体はまだずっとマシで
そのオープンソースアプリになると全くドキュメントなかったりするから。
pythonのこういうところが普及しない原因なんだろうな。

198:nobodyさん
13/04/04 16:51:07.95 mlSWjspl
>>197
はげど(死語)

199:nobodyさん
13/04/04 17:49:08.54
馬鹿には無理

200:nobodyさん
13/04/04 22:21:11.84 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

201:nobodyさん
13/04/05 00:29:47.17
>>200
文字列はcallableじゃないからとしか言いようが。。

202:nobodyさん
13/04/05 09:17:53.64
DjangoってO/R Mapperをすきなものに
簡単に入れ替えて使えるようになってますか?

203:nobodyさん
13/04/05 11:25:49.80 F/TEgITk
>>201
URLリンク(kay-docs.shehas.net)

204:nobodyさん
13/04/09 13:48:17.20
>>202
できないし、やる意味もない。

205:nobodyさん
13/04/10 14:16:59.81
>>202
できるけど、それならDjangoを使う意味がない

206:nobodyさん
13/04/10 15:54:55.53
>>204-205
ありがとう
O/R mapperやテンプレートエンジンは何種類かから選べたり、
自由に入れ替えたりできるフレームワークもあるので、Djangoも
そうなってると思ったのですが、残念

207:nobodyさん
13/04/14 20:18:57.11
iPhoneアプリ. Windowsアプリを売って生き残れ Ver 1.7 リンク数61
Http://qr. net/kh4y

208:nobodyさん
13/04/18 22:35:21.76
django製の業務パッケージってなにか実例ないですか?

209:nobodyさん
13/05/01 12:26:59.19
djangoアプリって日本好みなのは少ないね。
フレームワークとしては良いんだけどなぁ。

210:nobodyさん
13/05/01 23:56:23.92
Webサイトは沢山つくったけど業務アプリ/パッケージはないな
そもそもWebサイトに比べてそんなに引き合いもないし

211:nobodyさん
13/05/09 22:27:24.07
django1.3をscalaにポーティングしようかしら?

212:nobodyさん
13/05/10 17:37:23.92
>>211
Scalaは人気ないし、JavaかC#に移植してほしい。

213:nobodyさん
13/08/02 NY:AN:NY.AN
djangoを導入して、codezineのチュートリアルが終わりました。
データベースにMySQLを使っているのですが、テーブルの文字セットがlatin1_swedish_ciになっているせいなのか、
日本語のテキストを投入できないのですが、モデルの定義で症状順序を指定する方法はないのでしょうか?

214:nobodyさん
13/08/14 NY:AN:NY.AN
オブジェクトにプロパティを追加した状態でシリアライズを行いたいのですがどのようにすればいいでしょうか?

django.core.serializers.serializeでシリアライズを行うと、オブジェクトに行った変更が維持されずにシリアライズされてしまいます。

215:nobodyさん
13/09/18 12:08:44.39 gKUd666P
>>213
UTF8で作り直し

>>214
えっ

216:nobodyさん
13/09/23 17:58:49.68
>>214

pickle.dump は?とか言ってみるテスト

217:nobodyさん
13/09/24 18:51:53.67 qDsFnzSc
くっそー、すごく使いやすいし良いフレームワークだと思うのに、デプロイがうまくいかなくて腹立つ…
Djangoの問題じゃなくて、Apacheをうまくいじれない俺の問題なんだ…(;´д`)

218:nobodyさん
13/09/24 18:56:41.79
途中でテーブルの列が変わったときと既存のテーブルとどうやって連携させるのかよくわからない

219:nobodyさん
13/09/24 19:48:22.31
apatch捨ててnginx+uwsgiで行こう

220:nobodyさん
13/09/24 21:31:45.65
>>219
俺もその構成だな
なにより軽い

221:nobodyさん
13/09/24 23:56:34.50
>>217だけど

おk、nginxとuwsgiで行ってみる。

222:nobodyさん
13/09/28 21:38:29.53
>>221だけど
うまくいったわ
ありがとう!

223:nobodyさん
13/09/29 13:33:41.13
Python3用のチュートリアルはどこかにないでしょうか?

224:nobodyさん
13/09/29 19:09:36.11
Django1.5の時点ではPython3って実験的サポートじゃなかったっけ

225:nobodyさん
13/09/29 19:51:23.06
そうなんすか?
でもいまさらPython2系というのも後ろ向きな気がしますし…

226:nobodyさん
13/09/30 02:52:14.59
Python2と3の違いなんて微々たるもんじゃん

227:nobodyさん
13/09/30 11:04:14.98 4crUfdOT
まぁ1.4のドキュメント見ながら、1.5をいじっていけば良いと思うよ。日本語がいいならね。

Python2と3の違いは自分で何とかするなり、わからなかったらここで聞くなり。

228:nobodyさん
13/10/05 21:53:42.87 rLQ0vSt3
social authがうまく動かなくてぐぬぬってなっとる

229:nobodyさん
13/10/07 22:48:06.70
Django Social Auth、Django1.4だと
<a href="{% url socialauth_begin 'twitter' %}">ログイン</a>
で動くけど、1.5なら
<p><a href="{% url 'socialauth_begin' 'twitter' %}">ログイン</a></p>
じゃないと動かないのね…。

230:nobodyさん
13/10/10 08:22:16.60
<p>タグなしだと動かんって、こりゃハマるわw

231:nobodyさん
13/10/10 13:43:57.07
え?

232:nobodyさん
13/10/12 10:14:16.07 katzcLBA
ごめん、pタグの有無が問題なんじゃなくて、 url って文字列をクォーテーションで囲むかどうかが問題なんだ。ごめん。

233:nobodyさん
13/10/12 10:15:05.96 katzcLBA
urlじゃねぇや、socialauth_beginって文字列な。

234:nobodyさん
13/10/22 17:34:54.08
いままでPHPのWebフレームワークしか使ったことないけどrailsは以外に簡単だった
Djangoは難しすぎる
まず、コントローラとViewとルーティングの3つすら全然わからない

235:nobodyさん
13/10/22 20:21:30.74
それはいくらなんでもレベル低すぎないか・・・

236:nobodyさん
13/10/25 13:21:28.78 upIsqz91
とりあえずわかんなくても、1.4のドキュメントのチュートリアルを一通りやればいいと思う。
で、それをもとに改変していけばそのうち慣れるんじゃない?

237:nobodyさん
13/10/26 18:58:50.65
djangoで一からアプリ作るのは意外とわかりやすい。
でもアプリをいろいろ組み合わせようとすると大変なことになる。
djangoのバージョンも迂闊にあげられないし。
ショッピングサイトをsachimoベースで作ってるが、
一から自分で書いた方が早いんじゃないかと思えてきた。

238:nobodyさん
13/10/26 19:05:11.06
>>237
DjangoはRailsにならって、レールに沿ったやり方で開発する前提でしょ。どんなフレームワークでもそうだけど、特に。
レールから外れるなら、フレームワークよりライブラリ組み合わせるのが普通だと思う。

239:nobodyさん
13/10/26 20:16:45.45
>>237
それはDjangoというよりSatchmoの問題じゃなかろうか
他人の作ったAppを利用するのは思ったより面倒だからなぁ

240:234
13/10/27 11:53:23.07
マニュアルのみてもわかんない
これMVCじゃないよね

241:nobodyさん
13/10/27 13:56:07.27
MTV a.k.a MVC

242:nobodyさん
13/10/27 15:11:56.59
>>240
マニュアルにViewがControllerだって書いてなかったっけ。

243:nobodyさん
13/11/01 19:41:43.32
>>240
馬鹿には無理

244:nobodyさん
13/11/10 13:18:25.05
RailsやCakeを経て最近使い出したけどDjangoのORMって素敵だな
データベースありきじゃなくてちゃんとモデルが主役というか
今までDBの奴隷だったのが解放された感じ

245:nobodyさん
13/11/12 02:25:04.60 W3f6KAuy
Django1.6ですよみなさん

246:nobodyさん
13/11/12 05:46:48.93
>>245
settings.pyがシンプルすぎて目を疑った
でもuwsgiで動かそうとすると jingo ちゃんのせいでえらーになる

247:nobodyさん
13/11/12 15:28:40.85
いつになったら1.4の翻訳は終了しますか?遅くないですか?

248:nobodyさん
13/11/12 15:32:11.85
URLリンク(docs.djangoproject.com)
このぐらいの量なら1日1見出し分のゆっくり翻訳でも一ヶ月で終わりますよ
コミュニティがあまり活発ではないのでしょうか?

249:nobodyさん
13/11/12 17:20:28.66
1.0からとか使ってる人は、大きな変更点さえ日本語であれば、後は英語でも困らないんじゃないか。
困ってるなら、あなたがやってもいいのよ。

250:nobodyさん
13/11/12 21:08:41.51
別のフレームワークの日本語訳で忙しいから俺はやらないよw

251:nobodyさん
13/11/13 01:25:01.46
なぜ英語も読めないのか?まずはそこを反省すべきではなかろうか

252:nobodyさん
13/12/06 20:28:11.08 VQsT5HYM
Python3どうでしょう

253:nobodyさん
13/12/07 04:58:47.30
とりあえず問題なくつかえてる

254:sage
13/12/07 17:27:24.49 gAFb5wMQ
>>250
どのフレームワーク?証拠見せろよw

255:nobodyさん
13/12/13 12:15:36.58
1.6でPython3対応したことを知って学び始めてるんですが、
URLリンク(docs.djangoproject.com)
のA full exampleのuser = self.model(…)の意味がわかりません
BaseUserManagerの中にmodelっていうメゾッドがあるんですか?

256:nobodyさん
13/12/13 13:31:51.00
BaseUserManagerが継承しているManagerの中にmodelが定義されている
ドキュメント読んで疑問点が出たら django のソースを見るのが一番
たしかにそのあたりはちょっとややこしいけど・・・

257:nobodyさん
13/12/13 14:56:46.43
ありがとうございます
こんなに早く回答がもらえるとは思ってなかった

258:nobodyさん
13/12/19 13:42:20.81
1.5でカスタムユーザ追加されたらしいですけどその前はどうしてたんです?

259:nobodyさん
13/12/19 15:10:00.19
>>258
profile使ってた。

260:nobodyさん
13/12/19 15:41:05.68
カスタムユーザが便利すぎてもうprofileには戻れない

261:nobodyさん
14/01/18 18:04:24.93
開発中にview内でprintで変数の中身を確認してるのですが本番環境でprintを消し忘れると
[Errno 5] Input/output error
で落ちてしまいます
これを回避する方法は無いのでしょうか?

262:nobodyさん
14/01/19 01:49:06.58
logging使おう

263:nobodyさん
14/01/21 05:07:03.69
それはloggingを使って変数の中身を出力して確認するという事なのでしょうか
それともprintが出力するはずだった情報をloggingが受け取る?ことでエラーが発生しないというなんでしょうか

あと、もし500を返すような致命的エラーが出たらメールで管理者に送る機能しか無くて、ファイルにlogとして残せないですよね?
メール送るところを自分で改変してログに残せそうな気もするんですがちょっと敷居が高過ぎます

URLリンク(www.18th-technote.com)
今は上記を参考にviewで発生したエラーはprocess_exceptionで補足できてるんですが、
templateでもしエラーが起きたら補足できません
これデフォルトでなぜ付けないんだろうといつも疑問に思ってます

264:nobodyさん
14/01/21 09:23:00.68
>>263
uWSGI だとまず >>261 の状況が発生しないのだけど
使ってる環境(サーバ)はなあに?

ちなみに、printで標準出力に出したものは uWSGIのログにも出力されるよ

265:nobodyさん
14/01/22 21:52:13.79
>>264
gunicornです
gunicornでログを生成するようにしたらprintの内容が出力されてエラーが出なくなりました!
Django本体のログのことしか頭に無かったです
ヒントありがとうございます 大変助かりました

266:nobodyさん
14/01/25 07:08:02.10 HM5WIj95
このスレでuWSGIを初めて知ったのですが良さげなんでしょうか
Djangoと言えばnginx+gunicornの組み合わせしか知らないんですが最近気になってます

267:nobodyさん
14/01/28 23:39:54.41
同じくこのスレでuWSGIを知ったのですが、uWSGI+nginxにするとapacheに比べて
どの辺が嬉しいんでしょう?

268:nobodyさん
14/01/29 17:12:34.45
Appach
潤沢なメモリがあるサーバならApacheでも良い
枯れているし対応する拡張も多い
でも兎に角メモリイータでリソースに厳しい

uWSGI
馬鹿っ速い・先進的な機能がテンコ盛り・省リソースで動く

269:nobodyさん
14/02/07 23:56:26.65 NNxPDh1r
railsだのDjangoだのいじってる人はApache使わない印象

270:nobodyさん
14/02/13 04:25:53.66
pyodbc.connect("DSN=hoge")
を含む関数を
manage.py shellから呼んでも通るんですが、
本番環境だとApacheがsegmentation fault(11)を吐きます
上記関数を含まない他のviewは問題なく表示できます。
どこらへん調べたらいいですか?

Apacheでmod_wsgiをdaemonモードで使っててDjango1.6です

271:nobodyさん
14/02/23 22:30:46.68
ここえらい過疎だな・・・
RoRに比べて日本語の情報も少ないし、Django弄ってる日本人少ない?
RoRに浮気したいけど、初心者に厳しいとも聞くし

272:nobodyさん
14/02/24 03:31:27.40
>>271
問題ないから話題がないとも。
閉鎖的な日本ではログインシステムが標準てのはいいかもね。

273:nobodyさん
14/02/24 12:07:32.49
Web用にPython選ぶメリットって今は殆ど無いからね

274:nobodyさん
14/02/24 14:39:31.70 Grf2Q2cg
Pythonは初心者がマルチバイト文字で詰まって投げ出してるイメージ
英語圏は楽でいいよな

275:nobodyさん
14/02/24 20:18:43.30
あるわ

276:nobodyさん
14/02/24 21:38:54.89
今日からDjango始めてみたんだけど、Viewの部分が面倒くさくない?

277:nobodyさん
14/02/25 02:26:27.38
>>276
何と比べてるのかわからないが、標準View使えば。

278:nobodyさん
14/02/25 06:29:04.41
面倒くさいと感じたことはないな
そもそもDjangoに限らずViewの部分なんて難しい処理とかないじゃん

279:nobodyさん
14/02/25 16:06:21.05
Pythonで変数が設定されているか調べるにはどのようにすればいいですか?
PHPでいう、if(isset($var)){}のような事をしたいのですが

280:nobodyさん
14/02/25 16:10:25.31
ごめんなさい、スレを間違えました

281:nobodyさん
14/02/25 16:37:36.90
以下良くある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()だけでいけるように設定できれば楽なんだけど

282:nobodyさん
14/02/25 21:06:50.68
Djangoの設計概念の理解不足だと思う
とは言えドキュメントにこのあたりは纏まって書いてないので
ひと通りやらないと分からないのはちょっと不親切だったりする

まず"Djangoアプリ 再利用" とかでググってみておくれ
urls.pyにまとめてurlを書く利点はページのURL配置に自由度を持たせる為

viewの指定については、django.shortcuts.render でも使えばいい
それか同じように毎回書くのが面倒ならそのラッパを好きに自分で作る。

テンプレートの場所も設定で変更できる。
開発時の問題ならシンボリックリンクでも貼っておけば良い。

283:nobodyさん
14/02/25 21:56:01.64
なるほど、ちょっと調べてみるね

それともう一つ質問あるんだけど、
例えばHTMLのフォーム(form.html)からanalyze.pyへ移動し、
そこでフォームのバリデーションなんかしたりしてから別のHTMLページに飛ばしたい場合は、
<form action="./analyze.py">でどのように指定すればいいの?
例えテンプレートform.htmlがanalyze.pyと同じディレクトリにあっても相対パスが適用されないよね?

CSSやJSの外部ファイルの読み込みの際にワケが分からなくてハマったんだけど
コレは/static/ディレクトリを作成し、その中に入れてなんとかなった

Djangoではマニュアルとか読んでてもModelがDBからみの事をいうような書かれ方してるけど、
自分は外部ライブラリなどもModelだと認識してる
analyze.pyのような関数やクラス群はどこに置いて、どのように指定すればいいの?

284:nobodyさん
14/02/25 22:34:11.12
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だと認識してる
違う

285:nobodyさん
14/02/25 23:39:29.25
教えてくれてありがとね

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ファイルをディスパッチ、レンダリングするというなら、その方法が見当も付かないんだけど...
混乱してるなぁ...うぅむ...

286:nobodyさん
14/02/26 00:25:11.85
{{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 にまかせてしまう

287:nobodyさん
14/02/26 00:48:09.44
毎回毎回本当にありがとね
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スクリプトを書いていくということになるんだね?
なるほど

288:nobodyさん
14/02/26 07:45:04.05
質問者はMVCが理解できていない

289:nobodyさん
14/02/26 08:06:17.61
URLリンク(docs.djangoproject.jp)
URLリンク(d.hatena.ne.jp)
まずこのあたりに目を通してはどうだろうか

290:nobodyさん
14/02/26 21:53:50.81
Two scoop of django 1.6のkindle版マダー?

291:nobodyさん
14/02/26 22:48:12.48 LOhj6Qup
例えば日毎に複数モデルからデータを持ってきて表示するカレンダーを作る場合、
Manager:date等を指定してのクエリ(戻り:QuerySetや集約後のデータ)
View:Calendar.monthdatescalendarのような構造の配列を作る
    それぞれのモデルのManagerを呼んでデータ取得
    配列にはモデルから取得したデータをまとめた辞書を入れる
Template:forループで上の配列を回してhtmlにする

こんな感じで合ってますか?

不安な点:
・クエリを書く場所(View?Manager?)
・View内でコードを書く場所
   今はgetメソッドに直接書いていますが、getは弄らずにメソッドに書いてそれをテンプレートから
   呼んだ方が(view.hoge的な)いいのでしょうか?それとも別ファイルに関数を書くべきですか?
・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
  ※formは軽くタグとか付けられますよね
ネットでサンプルを探してはみたのですが、今一これが正解!的なコードが見つからなくて・・・
あと設計の参考になりそうな良いサイトってありますでしょうか?

292:nobodyさん
14/02/26 22:50:32.75
>・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
Template内で → View内で
でした

293:nobodyさん
14/02/27 01:08:04.43
単純なデータ取得、たとえば pkを指定してレコード取得や一覧取得はView
ビジネスロジックと言われるような中枢を成す処理はmodelまたはlogics.pyとか別ファイルにする
Djangoのポリシーではテンプレート内でデータは加工しない
テンプレートはデザイナーが触るものでプログラマーが触るものではない
よってデータの加工はviewでやる
getメソッド?なにそれ

294:nobodyさん
14/02/27 05:14:32.62
>>291
俺ならインタフェースだけ合わせて、template内で同じように見えるようにしてiteration。

295:nobodyさん
14/02/27 06:00:14.57
<select><option value="foo">bar</option></select>
のような形を作るにはどのようにすればいいのでしょうか?
class yes(forms.Form):
bar = forms.ChoiceField(
widget = forms.Select()
)
で、セレクトバーは出たんですが、その後の<option>の指定方法がわかりません
自分はHTMLで{{form.bar}}のようにしています

296:nobodyさん
14/02/27 06:01:32.60
すみません、barじゃなくfooでした

297:nobodyさん
14/02/27 10:04:22.81
>>296
choices

298:nobodyさん
14/02/27 17:19:30.62
フォームでPOST値を送信する場合って、
PHPの場合は、送った先が$_POST['foo']とかを処理するけど、
Djangoの場合は、処理するページ(<form>のあるページ)がPOST値を処理してから次のページへリダイレクトって仕組みだよね?
送った先(次のページ)がPOST値を取得したり表示する場合はセッションを使わないといけないんだよね?

299:nobodyさん
14/02/27 20:08:10.07
>>298
そんなことない。作り方次第。
ただ自然に作ると、

300:nobodyさん
14/02/27 20:09:28.52
>>299 続き
そうなる。

301:nobodyさん
14/03/01 00:04:24.54
>>292
getはクラスベース汎用ビューにあるgetのオーバーライドです
ネットの参考サイトがそのような書き方をしていましたので
requestからURLパラメータ欲しいから・・・と思いましたがView.requestでどこからでも取得出来るんですね
となるとコンテキストに追加するのはget_context_dataがいいのかな
あとテーブル操作はカスタムManager、レコード操作はModelと意識してます
>>294
フォームで言う、form.messageみたいなのを作るって事でしょうか?

ネットでもいろんなやり方があって、もう設計に拘らず適当でもいい気がしてきました・・・w
しかし関数ベースとクラスベースの情報があってぐぐり難いですね

302:nobodyさん
14/03/01 02:11:13.60
>>301
>>294だが違う。
モデルで吸収するってこと。

303:nobodyさん
14/03/02 09:36:50.36
>>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
スレリンク(tech板:85番)

304:nobodyさん
14/04/08 07:57:45.66 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

305:nobodyさん
14/04/08 19:30:15.43
計測何回やったんだ
sqliteはファイルだからIOがとかなんとか
mysqlもファイルですよ

306:nobodyさん
14/04/08 23:51:56.94
>>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
14/04/09 06:33:27.18
すみません、どうやら単純にデータがSSDにあるかどうかの問題でした…
sqliteファイルをSSDへ移したところ、2800ms→230msまで縮まりました
しかしHDDとSSDでここまで違うとは…

308:nobodyさん
14/05/22 16:31:45.79
馬鹿には無理

309:nobodyさん
14/05/24 02:57:47.14
nginxで使う場合uwsgiとgunicornでは、どちらがオススメでしょうか?

310:nobodyさん
14/05/24 03:17:53.06
そんな質問してるようじゃおまえにはまだはやい

311:nobodyさん
14/05/24 12:31:13.12
uWSGIの方が色々出来て便利だけどドキュメント読めないと詰むかもわからん。
Emperor + Zerg で Graceful reload とか。

312:nobodyさん
14/05/24 13:50:56.96
バカげた質問である

313:nobodyさん
14/05/24 14:09:01.28
Djangoに入ってるsimplejsonってUNICODEを期待してるの?

314:nobodyさん
14/05/26 00:49:39.85
>>313
は?

315:nobodyさん
14/07/02 22:36:04.75
どなたかいらっしゃたらちょっと助けて下さい。

DjangoのViewのとある関数で、別の関数の中で使った変数を使うことはできますか?
下の例なら、関数Aの中で関数BのgetHAMという変数を使いたいです。

316:nobodyさん
14/07/02 22:38:02.95
(例)
def A(request):
fee = int(getHAM) + 1
return fee

def B(request):
getHAM = str(1+1)

317:nobodyさん
14/07/02 23:15:22.78
そんな設計絶対に許さないけど、どうしてもというならセッション使おう

318:nobodyさん
14/07/02 23:17:36.14
やっぱり許せん

ステートレスって言葉を勉強してこい

319:nobodyさん
14/07/03 00:19:06.33
315です。

request.session['getHAM']みたいな感じで解決できたようです。
どうもありがとうございました。

ステートレスの意味が調べました。
ですが私はOAuth1を使ったTwitterアプリを作ろうとしていて、
views.pyのTwitterへリダイレクトする関数とTwitterからのcallbackを受ける関数はどうしても違うものになるかと思います。
プログラミング自体が初心者でして、不快にさせていたら申し訳ないです。

320:nobodyさん
14/07/03 01:28:08.19
>>319
ごめん調子に乗っただけ

oauth か。oauth みたいにステート保持する必要あるならセッション使う


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch