私はCakeのバックグラウンドを持っており、Djangoを学び始めたばかりです。私はそれがかなり好きですが、ケーキのように設定より規約を使用したいと思います。それで、
CakeスタイルのURLを自動的に取得するにはどうすればよいですか?たとえば、私がそこに行った場合、
mysite.com/posts/view/5
ロードしmysite.posts.views.view
て引数5
を渡しますか?urls.pyのようなものを追加できると思って(r'^(.*)/(.*)', 'mysite.$1.$2'),
いましたが、もちろんそれは機能しません。テンプレートを自動的にロードするにはどうすればよいですか?各ビュー関数は、のようなテンプレートを自動的にロードする必要があります
templates/posts/view.html
。
これも可能ですか、それともDjangoのコアをハックする必要がありますか?
カールが提案したことに基づいた私の解決策は次のとおりです。
urlpatterns = patterns('',
# url pats here
url(r'^(?P<app>\w+)/(?P<view>\w+)/(?P<args>.*)$', 'urls.dispatch')
)
def dispatch(req, app, view, args): # FIXME: ignores decorators on view func!
func = get_callable(app+'.views.'+view)
if args:
ret = func(req, *args.split('/'))
else:
ret = func(req)
if type(ret) is dict:
return render_to_response(app+'/'+view+'.html', ret)
else:
return ret
初期テストではかなりうまく機能しているようです。1つの関数で両方の問題を解決します。おそらくGETスタイルの引数をサポートしません。