2012-03-06 10 views
0

私は多くのアプリの多くのビューで次の機能を備えています。次のように:繰り返しビュー機能を複数のビューに含める?

これをどのように私のアプリのviews.pyに含めるのですか? 1つのアプリケーションで定義し、そこからインポートするだけですか?

from main.global import simplejson 

また、私が見ることができるよく組織されたdjangoプロジェクトのgithubページがありますか?

+0

[私はカスタムモジュールをDjangoアプリケーションに含めることができます](http://stackoverflow.com/questions/2576060/how-can-i-include-custom-modules-in-a-django-app ) –

答えて

0

はい、あなたがすることができます単一のビュー、またはutilsファイル、またはあなたが望むもので定義し、すべてのビューにインポートするだけです。私は頻繁にユビキタスな機能でこれを行います。

1

django 1.3を使用している場合は、この機能を抽象化するためにクラスベースのビューを使用できます。あなたは、渡されたもののjsonを返すベースビューから単純にビューを拡張します。このクラスを持つファイルをいくつかの一般的な場所に保存します(Ignacioのコメントにリンクされている答えに記述されています)。実際に

、これはdocumentation for class based viewsの例のタイプのいずれかです。

from django import http 
from django.utils import simplejson as json 

class JSONResponseMixin(object): 
    def render_to_response(self, context): 
     "Returns a JSON response containing 'context' as payload" 
     return self.get_json_response(self.convert_context_to_json(context)) 

    def get_json_response(self, content, **httpresponse_kwargs): 
     "Construct an `HttpResponse` object." 
     return http.HttpResponse(content, 
           content_type='application/json', 
           **httpresponse_kwargs) 

    def convert_context_to_json(self, context): 
     "Convert the context dictionary into a JSON object" 
     # Note: This is *EXTREMELY* naive; in reality, you'll need 
     # to do much more complex handling to ensure that arbitrary 
     # objects -- such as Django model instances or querysets 
     # -- can be serialized as JSON. 
     return json.dumps(context) 

これは、あなたが(また、ドキュメントから)それを使用する方法である:

class HybridDetailView(JSONResponseMixin, 
         SingleObjectTemplateResponseMixin, BaseDetailView): 
    def render_to_response(self, context): 
     # Look for a 'format=json' GET argument 
     if self.request.GET.get('format','html') == 'json': 
      return JSONResponseMixin.render_to_response(self, context) 
     else: 
      return SingleObjectTemplateResponseMixin.render_to_response(self, context) 
関連する問題