2016-11-06 15 views
0

私はDjangoの新機能を提供しています(今のところPythonを書いています)、ビューとフォームフレームワークをDjangoで使用することはできませんデータベースの必要性またはモデルの使用モデルベースのデータベースなしでDjangoのビューとフォームを使用する

コンテンツは動的で、ユーザーがウェブサイトを起動するたびに辞書に入力されます。だから私はDjangoのビューとフォームを活用したいが、モデルクラス(データベース)からではなく、辞書からの詳細を渡したい。

私は自分自身を正しく説明してくれることを願っています。

だからこれに追加してください。

あなたは、クラスベースのモデルについては、以下のいた場合:

class TestObj(object): 
    def __init__(self): 
     self.var1 = [] 

testdict = defaultdict(TestObj) 
testdict['test'].var1 = ['blah'] 

class TestClass(models.Models): 
    var1 = models.CharField(....) 

class DetailView(generic.DetailedView): 
    model = TestClass 

がどのように私はこのようなクラスベースの辞書でDetailViewクラス(またはその他のDjangoベースのビューのフレームワークを使用することができます

DetailViewクラスのモデルフィールドで辞書を使用するだけですか?

何か入力が間違っている場合は、私にごめんなさい。

ありがとう

答えて

1

全く可能です。

しかし、データベースを持たないと決めたら、多くのcontrib機能(アカウント、バックエンドなど)を使用する機会がなくなります。空のプロジェクト(django-admin startprojectで作られたもの)から、MIDDLEWAREcontext_processorsTEMPLATEの大部分を削除する必要があります。DATABASESを空のdict()に設定してください(@spectrasのコメントを参照)。

UPD:(あなたが大幅にあなたの質問を変更しているので、ここでは詳細がある)

django.db.modelsを使用すると、データベースなしであまり意味がありません(modelsパッケージへのパスにdbに注意を払います) 。いくつかの一般的なビュー(DetailViewのような)は、モデルを扱うときの時間を惜しまないように作られているので、それらを使ってもあまり意味がありません。

TestClassインスタンスを保存する必要がなく、そのライフタイムが単一のユーザー要求に対する応答を生成することに限られている場合は、djangoモデルをまったく使用しなくても大丈夫です。 TemplateViewを使用すれば十分です。 my_template.html

class TestClass(object): 
     def __init__(foo, bar): 
      self.foo, self.bar = foo, bar 

    class MyView(TemplateView): 
     template_name = 'my_template.html' 

     def get_context_data(self, **kwargs): 
      context = super().get_context_data(**kwargs) 
      context['my_object'] = TestClass(foo="hello", bar="world") 
      return context 

{{ my_object.foo }} {{ my_object.bar }} 
+0

Iは '{}'いくつかの時点でエラーが発生したために 'DATABASES'設定思い出します。 '{'default':{}}'のように、ダミーの 'default'キーを与えなければなりませんでした。まだ適用されているかどうかはわかりません。 – spectras

関連する問題