探検


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

■ このスレッドは過去ログ倉庫に格納されています
2011/12/15(木) 23:47:02.03ID:???
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
266nobodyさん
垢版 |
2014/01/25(土) 07:08:02.10ID:HM5WIj95
このスレでuWSGIを初めて知ったのですが良さげなんでしょうか
Djangoと言えばnginx+gunicornの組み合わせしか知らないんですが最近気になってます
267nobodyさん
垢版 |
2014/01/28(火) 23:39:54.41ID:???
同じくこのスレでuWSGIを知ったのですが、uWSGI+nginxにするとapacheに比べて
どの辺が嬉しいんでしょう?
268nobodyさん
垢版 |
2014/01/29(水) 17:12:34.45ID:???
Appach
潤沢なメモリがあるサーバならApacheでも良い
枯れているし対応する拡張も多い
でも兎に角メモリイータでリソースに厳しい

uWSGI
馬鹿っ速い・先進的な機能がテンコ盛り・省リソースで動く
269nobodyさん
垢版 |
2014/02/07(金) 23:56:26.65ID:NNxPDh1r
railsだのDjangoだのいじってる人はApache使わない印象
270nobodyさん
垢版 |
2014/02/13(木) 04:25:53.66ID:???
pyodbc.connect("DSN=hoge")
を含む関数を
manage.py shellから呼んでも通るんですが、
本番環境だとApacheがsegmentation fault(11)を吐きます
上記関数を含まない他のviewは問題なく表示できます。
どこらへん調べたらいいですか?

Apacheでmod_wsgiをdaemonモードで使っててDjango1.6です
271nobodyさん
垢版 |
2014/02/23(日) 22:30:46.68ID:???
ここえらい過疎だな・・・
RoRに比べて日本語の情報も少ないし、Django弄ってる日本人少ない?
RoRに浮気したいけど、初心者に厳しいとも聞くし
272nobodyさん
垢版 |
2014/02/24(月) 03:31:27.40ID:???
>>271
問題ないから話題がないとも。
閉鎖的な日本ではログインシステムが標準てのはいいかもね。
273nobodyさん
垢版 |
2014/02/24(月) 12:07:32.49ID:???
Web用にPython選ぶメリットって今は殆ど無いからね
274nobodyさん
垢版 |
2014/02/24(月) 14:39:31.70ID:Grf2Q2cg
Pythonは初心者がマルチバイト文字で詰まって投げ出してるイメージ
英語圏は楽でいいよな
275nobodyさん
垢版 |
2014/02/24(月) 20:18:43.30ID:???
あるわ
276nobodyさん
垢版 |
2014/02/24(月) 21:38:54.89ID:???
今日からDjango始めてみたんだけど、Viewの部分が面倒くさくない?
277nobodyさん
垢版 |
2014/02/25(火) 02:26:27.38ID:???
>>276
何と比べてるのかわからないが、標準View使えば。
278nobodyさん
垢版 |
2014/02/25(火) 06:29:04.41ID:???
面倒くさいと感じたことはないな
そもそもDjangoに限らずViewの部分なんて難しい処理とかないじゃん
279nobodyさん
垢版 |
2014/02/25(火) 16:06:21.05ID:???
Pythonで変数が設定されているか調べるにはどのようにすればいいですか?
PHPでいう、if(isset($var)){}のような事をしたいのですが
280nobodyさん
垢版 |
2014/02/25(火) 16:10:25.31ID:???
ごめんなさい、スレを間違えました
281nobodyさん
垢版 |
2014/02/25(火) 16:37:36.90ID:???
以下良くある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()だけでいけるように設定できれば楽なんだけど
282nobodyさん
垢版 |
2014/02/25(火) 21:06:50.68ID:???
Djangoの設計概念の理解不足だと思う
とは言えドキュメントにこのあたりは纏まって書いてないので
ひと通りやらないと分からないのはちょっと不親切だったりする

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

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

テンプレートの場所も設定で変更できる。
開発時の問題ならシンボリックリンクでも貼っておけば良い。
283nobodyさん
垢版 |
2014/02/25(火) 21:56:01.64ID:???
なるほど、ちょっと調べてみるね

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

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

Djangoではマニュアルとか読んでてもModelがDBからみの事をいうような書かれ方してるけど、
自分は外部ライブラリなどもModelだと認識してる
analyze.pyのような関数やクラス群はどこに置いて、どのように指定すればいいの?
284nobodyさん
垢版 |
2014/02/25(火) 22:34:11.12ID:???
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だと認識してる
違う
285nobodyさん
垢版 |
2014/02/25(火) 23:39:29.25ID:???
教えてくれてありがとね

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ファイルをディスパッチ、レンダリングするというなら、その方法が見当も付かないんだけど...
混乱してるなぁ...うぅむ...
286nobodyさん
垢版 |
2014/02/26(水) 00:25:11.85ID:???
{{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 にまかせてしまう
287nobodyさん
垢版 |
2014/02/26(水) 00:48:09.44ID:???
毎回毎回本当にありがとね
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スクリプトを書いていくということになるんだね?
なるほど
288nobodyさん
垢版 |
2014/02/26(水) 07:45:04.05ID:???
質問者はMVCが理解できていない
289nobodyさん
垢版 |
2014/02/26(水) 08:06:17.61ID:???
http://docs.djangoproject.jp/en/latest/misc/design-philosophies.html
http://d.hatena.ne.jp/shuji_w6e/20090514/1242227504
まずこのあたりに目を通してはどうだろうか
290nobodyさん
垢版 |
2014/02/26(水) 21:53:50.81ID:???
Two scoop of django 1.6のkindle版マダー?
291nobodyさん
垢版 |
2014/02/26(水) 22:48:12.48ID:LOhj6Qup
例えば日毎に複数モデルからデータを持ってきて表示するカレンダーを作る場合、
Manager:date等を指定してのクエリ(戻り:QuerySetや集約後のデータ)
View:Calendar.monthdatescalendarのような構造の配列を作る
    それぞれのモデルのManagerを呼んでデータ取得
    配列にはモデルから取得したデータをまとめた辞書を入れる
Template:forループで上の配列を回してhtmlにする

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

不安な点:
・クエリを書く場所(View?Manager?)
・View内でコードを書く場所
   今はgetメソッドに直接書いていますが、getは弄らずにメソッドに書いてそれをテンプレートから
   呼んだ方が(view.hoge的な)いいのでしょうか?それとも別ファイルに関数を書くべきですか?
・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
  ※formは軽くタグとか付けられますよね
ネットでサンプルを探してはみたのですが、今一これが正解!的なコードが見つからなくて・・・
あと設計の参考になりそうな良いサイトってありますでしょうか?
292nobodyさん
垢版 |
2014/02/26(水) 22:50:32.75ID:???
>・現在はデータをループしやすいような配列にしてから渡してますが、Template内である程度HTMLにした方がいいのか?
Template内で → View内で
でした
293nobodyさん
垢版 |
2014/02/27(木) 01:08:04.43ID:???
単純なデータ取得、たとえば pkを指定してレコード取得や一覧取得はView
ビジネスロジックと言われるような中枢を成す処理はmodelまたはlogics.pyとか別ファイルにする
Djangoのポリシーではテンプレート内でデータは加工しない
テンプレートはデザイナーが触るものでプログラマーが触るものではない
よってデータの加工はviewでやる
getメソッド?なにそれ
294nobodyさん
垢版 |
2014/02/27(木) 05:14:32.62ID:???
>>291
俺ならインタフェースだけ合わせて、template内で同じように見えるようにしてiteration。
295nobodyさん
垢版 |
2014/02/27(木) 06:00:14.57ID:???
<select><option value="foo">bar</option></select>
のような形を作るにはどのようにすればいいのでしょうか?
class yes(forms.Form):
bar = forms.ChoiceField(
widget = forms.Select()
)
で、セレクトバーは出たんですが、その後の<option>の指定方法がわかりません
自分はHTMLで{{form.bar}}のようにしています
296nobodyさん
垢版 |
2014/02/27(木) 06:01:32.60ID:???
すみません、barじゃなくfooでした
297nobodyさん
垢版 |
2014/02/27(木) 10:04:22.81ID:???
>>296
choices
298nobodyさん
垢版 |
2014/02/27(木) 17:19:30.62ID:???
フォームでPOST値を送信する場合って、
PHPの場合は、送った先が$_POST['foo']とかを処理するけど、
Djangoの場合は、処理するページ(<form>のあるページ)がPOST値を処理してから次のページへリダイレクトって仕組みだよね?
送った先(次のページ)がPOST値を取得したり表示する場合はセッションを使わないといけないんだよね?
299nobodyさん
垢版 |
2014/02/27(木) 20:08:10.07ID:???
>>298
そんなことない。作り方次第。
ただ自然に作ると、
300nobodyさん
垢版 |
2014/02/27(木) 20:09:28.52ID:???
>>299 続き
そうなる。
301nobodyさん
垢版 |
2014/03/01(土) 00:04:24.54ID:???
>>292
getはクラスベース汎用ビューにあるgetのオーバーライドです
ネットの参考サイトがそのような書き方をしていましたので
requestからURLパラメータ欲しいから・・・と思いましたがView.requestでどこからでも取得出来るんですね
となるとコンテキストに追加するのはget_context_dataがいいのかな
あとテーブル操作はカスタムManager、レコード操作はModelと意識してます
>>294
フォームで言う、form.messageみたいなのを作るって事でしょうか?

ネットでもいろんなやり方があって、もう設計に拘らず適当でもいい気がしてきました・・・w
しかし関数ベースとクラスベースの情報があってぐぐり難いですね
302nobodyさん
垢版 |
2014/03/01(土) 02:11:13.60ID:???
>>301
>>294だが違う。
モデルで吸収するってこと。
303nobodyさん
垢版 |
2014/03/02(日) 09:36:50.36ID:???
>>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/85
304nobodyさん
垢版 |
2014/04/08(火) 07:57:45.66ID: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
305nobodyさん
垢版 |
2014/04/08(火) 19:30:15.43ID:???
計測何回やったんだ
sqliteはファイルだからIOがとかなんとか
mysqlもファイルですよ
306nobodyさん
垢版 |
2014/04/08(火) 23:51:56.94ID:???
>>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がおかしいのかも・・・
307306
垢版 |
2014/04/09(水) 06:33:27.18ID:???
すみません、どうやら単純にデータがSSDにあるかどうかの問題でした…
sqliteファイルをSSDへ移したところ、2800ms→230msまで縮まりました
しかしHDDとSSDでここまで違うとは…
308nobodyさん
垢版 |
2014/05/22(木) 16:31:45.79ID:???
馬鹿には無理
309nobodyさん
垢版 |
2014/05/24(土) 02:57:47.14ID:???
nginxで使う場合uwsgiとgunicornでは、どちらがオススメでしょうか?
310nobodyさん
垢版 |
2014/05/24(土) 03:17:53.06ID:???
そんな質問してるようじゃおまえにはまだはやい
311nobodyさん
垢版 |
2014/05/24(土) 12:31:13.12ID:???
uWSGIの方が色々出来て便利だけどドキュメント読めないと詰むかもわからん。
Emperor + Zerg で Graceful reload とか。
312nobodyさん
垢版 |
2014/05/24(土) 13:50:56.96ID:???
バカげた質問である
313nobodyさん
垢版 |
2014/05/24(土) 14:09:01.28ID:???
Djangoに入ってるsimplejsonってUNICODEを期待してるの?
314nobodyさん
垢版 |
2014/05/26(月) 00:49:39.85ID:???
>>313
は?
315nobodyさん
垢版 |
2014/07/02(水) 22:36:04.75ID:???
どなたかいらっしゃたらちょっと助けて下さい。

DjangoのViewのとある関数で、別の関数の中で使った変数を使うことはできますか?
下の例なら、関数Aの中で関数BのgetHAMという変数を使いたいです。
316nobodyさん
垢版 |
2014/07/02(水) 22:38:02.95ID:???
(例)
def A(request):
fee = int(getHAM) + 1
return fee

def B(request):
getHAM = str(1+1)
317nobodyさん
垢版 |
2014/07/02(水) 23:15:22.78ID:???
そんな設計絶対に許さないけど、どうしてもというならセッション使おう
318nobodyさん
垢版 |
2014/07/02(水) 23:17:36.14ID:???
やっぱり許せん

ステートレスって言葉を勉強してこい
319nobodyさん
垢版 |
2014/07/03(木) 00:19:06.33ID:???
315です。

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

ステートレスの意味が調べました。
ですが私はOAuth1を使ったTwitterアプリを作ろうとしていて、
views.pyのTwitterへリダイレクトする関数とTwitterからのcallbackを受ける関数はどうしても違うものになるかと思います。
プログラミング自体が初心者でして、不快にさせていたら申し訳ないです。
320nobodyさん
垢版 |
2014/07/03(木) 01:28:08.19ID:???
>>319
ごめん調子に乗っただけ

oauth か。oauth みたいにステート保持する必要あるならセッション使う
321nobodyさん
垢版 |
2014/07/20(日) 11:11:20.67ID:???
プロジェクトとアプリケーションがいまいちわかりません
djangoではプロジェクトの下に異なるアプリケーションを作成する前提なんですか?
2ch掲示板のクローンを作りたいならmanage.py startapp bbs2chclone
rssリーダーを作りたいならmanage.py startapp rssreader
って1つのプロジェクトの中に作っていくスタイルがdjangoですか?
PHPのMVCから流れてきたのでこのへんがよくわかりません
322nobodyさん
垢版 |
2014/07/20(日) 11:42:27.87ID:???
startappでviews.pyも一緒に作られないのは何故ですか?
323nobodyさん
垢版 |
2014/07/20(日) 17:59:28.79ID:???
作られるよ
324nobodyさん
垢版 |
2014/07/20(日) 18:43:16.39ID:???
1.6と1.7では作られませんよ
バージョンいくつの話ですか?
325nobodyさん
垢版 |
2014/07/20(日) 19:37:29.49ID:???
>>321
二つ目のアプリを別プロジェクトで作ってもいいけど、運用で一緒に動かせるように。
標準で入っているアプリも使っているだろ。
アプリ単体で作ってもいいけど、すぐ動かせるようにプロジェクトをジェネレートしているんだと思う。
326nobodyさん
垢版 |
2014/09/20(土) 09:55:41.08ID:???
配布目的ならやっぱりプロジェクトはわけたほうがいいですよね
327nobodyさん
垢版 |
2014/09/22(月) 18:49:56.60ID:???
旧態依然とした社内で布教したく、業務システムのプロトタイプを作ってみました。
そこに入れるデータがExcelにしかないのですが、これをインポートするのにxlrdライブラリでExcelを読みつつ、django用に書いたmodelクラスのインスタンスを生成してはsave()を走らせるコードをちまちまと走らせています。

これでも要件は満たすのですが、皆さんだったらどうしますか?
328nobodyさん
垢版 |
2014/09/25(木) 18:09:06.55ID:aYh5A6Fe
Djangoでおすすめのプラグイン教えて
自分はdjango-debug-toolbarとpaginationくらいしか使ってないけど
329nobodyさん
垢版 |
2014/09/25(木) 21:23:37.04ID:???
>>328
paginationとかライブラリとしてしか使ってなかったわ。
330nobodyさん
垢版 |
2014/09/26(金) 03:12:29.74ID:uLtl5abZ
フォームでアルファベットのみとかしたい場合どうすればいい?
cleared_data[].isalpha()とかしたら、アルファベット以外でもすり抜けてしまうんだけど
331nobodyさん
垢版 |
2014/09/26(金) 07:54:29.85ID:???
クライアントサイドとサーバサイドでバリデーションかけろよ
332nobodyさん
垢版 |
2014/09/26(金) 08:33:46.96ID:???
>>330
cleaned_data見ろよ。
333nobodyさん
垢版 |
2014/09/26(金) 09:36:46.32ID:uLtl5abZ
>>331
は?
サーバサイドでは上記のように試したんだけど出来なかった
内部で変換されて出力時にまた変換されてるのかな、と
どういう風にチェックしたらいい?
DjangoはガチガチのFWだから、PHPみたいにprintやvar_dumpしても出てこないから分かりにくい


>>332
ごめん、cleared_dataじゃなく、cleaned_dataの書き間違いだった
どうやって見るん?
pdbとか?
自分はdjango-pdb見たが分からんかった
334nobodyさん
垢版 |
2014/09/26(金) 13:01:27.56ID:???
【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自体を別のシェルに
置換するなどの回避策を実施することも重要だ。
335nobodyさん
垢版 |
2014/09/26(金) 16:46:16.19ID:???
>>333
シェルで見る。
ブラウザでしか操作できないならログ。
それもわからないならraiseしちゃうとか。
336nobodyさん
垢版 |
2014/10/02(木) 20:04:40.32ID:MmprTnHx
models使ったスクリプトで、データベースに問い合わせて得た結果セットをJSON化したいんですが、
...is not JSON seralizableとなります
どう処理すればいいですか?

ちなみに、
>>>foo = bar.objects.all()
>>>print type(foo)
<class 'django.db.models.query.ValuesQuerySet'>
>>>print json.dumps(foo)
で上記のエラーが出ます
337nobodyさん
垢版 |
2014/10/02(木) 21:12:21.95ID:???
QuerySetオブジェクトはそのままでは渡せない
dictionaryじゃないと
http://stackoverflow.com/questions/10502135/django-queryset-to-dict-for-use-in-json
338nobodyさん
垢版 |
2014/10/03(金) 08:34:38.15ID:L6uW93jV
>>>a = ['ringo','リンゴ']
>>>print a
[{'ringo':'\xe3\x82'}]とか\u73feとかで表示されますが、これを日本語でちゃんと、'りんご'と表示させるにはどうすればいいですか?


また、階層が深いと[<ringo: ringo object>]のようになったりもしますがこれの対処法も教えてもらえないでしょうか?
339nobodyさん
垢版 |
2014/10/03(金) 08:44:06.28ID:???
>>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()みたいにオブジェクト内でもデータを確認したいのですが
340nobodyさん
垢版 |
2014/10/03(金) 09:28:45.23ID:???
django関係なくね?
まずは python2 か python3 かはっきりしろ
ringo クラスに __repr__ メソッドを追加しろ
341nobodyさん
垢版 |
2014/10/03(金) 10:04:20.76ID:???
>>340
関係ないと言いつつ的確に答えてて濡れた
342nobodyさん
垢版 |
2014/10/04(土) 09:46:27.47ID:???
Djangoってさ、フォームのセキュリティに関して自分たちは何も対策することない?
基本的にO/Rマッパー使ったり、Formsクラスや{{ csrf_token }}使ってる限り
セッションハイジャックに関しては分かんないけど
343nobodyさん
垢版 |
2014/10/04(土) 10:28:41.48ID:???
任せとけばいいよ
テストみてみ
すごいから
344nobodyさん
垢版 |
2014/10/04(土) 10:30:15.26ID:???
悪いんだけど、そのテスト結果ってどこに書かれてる?
345nobodyさん
垢版 |
2014/10/04(土) 11:44:46.26ID:???
django のテストコード見てみろ
結果は実行してみろよ
346nobodyさん
垢版 |
2014/10/04(土) 11:57:21.96ID:???
ポストされたデータの妥当性テスト
https://github.com/django/django/blob/master/tests/forms_tests/tests/test_fields.py
https://github.com/django/django/blob/master/tests/file_uploads/tests.py

他心配ならテスト読んでみるといい

https://github.com/django/django/tree/master/tests

他のフレームワークと違ってdjangoはmozillaがCVEとかあげてくれてる
http://www.cvedetails.com/vulnerability-list/vendor_id-10199/product_id-18211/Djangoproject-Django.html
ここ上がってるバグを他のフォームライブラリーで試してみるといいよ
347nobodyさん
垢版 |
2014/10/04(土) 12:54:37.96ID:???
なるほど、ありがと
安心して使うことにする
348nobodyさん
垢版 |
2014/10/04(土) 18:50:26.74ID:???
ジャンゴ、ジャンゴ
349nobodyさん
垢版 |
2014/10/04(土) 18:53:08.32ID:???
DjangoとcakePHPってどっちが良い?
サーバ公開ならApatcheと簡単に連携できてメンテも簡単なcakePHPかなと思うけど
350nobodyさん
垢版 |
2014/10/05(日) 01:06:59.58ID:???
>>349
開発は圧倒的にdjangoかな。
351nobodyさん
垢版 |
2014/10/05(日) 23:02:12.14ID:5shIACe9
Djangoってさ、views.pyもだけど、特にforms.pyがとんでもなく長くなってしまうと思うけどどう対処してる?
フォーム登録のあるページを5ページでも作ろうものならその度にclass作って一気に長くなって管理が面倒くさいんだけど
352nobodyさん
垢版 |
2014/10/06(月) 00:23:20.78ID:???
views.py が大きくなる時は、
views/__init__py
views/foo.py
views/bar.py
みたいにファイル分割して __init__.py からインポートするようにしてるよ。
353nobodyさん
垢版 |
2014/10/06(月) 01:23:11.52ID:???
__init__ で * 展開する奴らを見ると殺したくなる
354nobodyさん
垢版 |
2014/10/06(月) 01:24:20.75ID:???
'views.foo' でいいだろ
355nobodyさん
垢版 |
2014/10/06(月) 01:26:27.04ID:???
は???
356nobodyさん
垢版 |
2014/10/06(月) 01:42:28.00ID:???
>>351
modelForm使ってるので書くことほとんどない。
あと、対応するmodelのファイルに一緒に入れてる。
models.pyは使ってない。1model1ファイル。
modelが中心だと考えている。
357nobodyさん
垢版 |
2014/10/06(月) 09:45:14.28ID:???
forms.IntegerFieldにmax_length入れたら怒られたんだけど、自分はセキュリティ観点上フォームには必ず文字数制限を入れたい
しかも今回の場合は郵便番号の前半と後半部分なので3文字とかしか必要ないんだけど
もちろんクライアントサイド側でバリデートはさせるけど
どうしたらいいですか?
358nobodyさん
垢版 |
2014/10/06(月) 10:05:58.70ID:???
>>> 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
359nobodyさん
垢版 |
2014/10/06(月) 11:13:11.67ID:???
うわ、そんなやり方しないといけないの?
widgetとかCharFieldの方に入れるのかな?
何か複雑そうだなぁ

教えてくれてありがと
360nobodyさん
垢版 |
2014/10/06(月) 22:27:56.00ID:???
>>357
django.core.validators.MaxValueValidator を使えばもう少し簡潔に書けるかも。
少なくとも、フィールドの型を本来のものと変える必要はなくなる。

使い方 等々、上のパッケージとクラスでググるとドキュメントが出てくるよ。
361nobodyさん
垢版 |
2014/10/08(水) 10:18:30.84ID:L8w+mBMY
Django
https://www.youtube.com/watch?v=jn5ajaZgcMw
362nobodyさん
垢版 |
2014/10/08(水) 10:41:42.66ID:???
>>361
マルチうぜぇ
363nobodyさん
垢版 |
2014/10/13(月) 23:45:05.77ID:???
views.pyを複数ファイルに分割すると
各viewで同じようなimport文を書くことになると思うんですけど
これスマートにできませんか? そういうもの割り切るしかないですか?
364nobodyさん
垢版 |
2014/10/13(月) 23:59:05.29ID:???
それはしゃーない
365nobodyさん
垢版 |
2014/10/14(火) 11:41:08.90ID:???
よくある、ユーザー登録する際にメールアドレスを登録してもらって、
そのメールに1回メールを送ってから、記載されたURLを開いて
存在確認が出来たらユーザー登録を許可するってのをやりたいんだけど、
contrib.authでコツコツ実装する感じですかね?

なんか、よくあるパターンなので、いいモジュールがあればと思ったんですが。
366nobodyさん
垢版 |
2014/10/14(火) 16:31:09.62ID:???
Flaskならこの本でそのものズバリの内容を
ステップbyステップで解説してるんだがなぁ
つか今安いな! この本すごく分かり易いから、
djangoな人にも参考になると思うよ
http://www.amazon.co.jp/gp/aw/d/B00K00W9LI
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況