簡體   English   中英

在沒有基於模型的數據庫的情況下使用 Django 視圖和表單

[英]Using Django Views and Forms without a Models based Database

我對 Django 有點陌生(現在已經編寫 Python 有一段時間了),我想知道是否有可能在 Django 中使用視圖和表單框架而無需數據庫或使用模型。

內容是動態的,每次用戶啟動網站時都會填充到字典中。 所以我想利用 Django 視圖和表單,但通過字典中的細節而不是模型類(數據庫)

我希望我已經正確地解釋了自己。

所以添加到這個然后。

如果您有以下基於模型的類:

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

class DetailView(generic.DetailedView):  
    model = TestClass

我怎么能使用 DetailView 類(或任何其他基於 django 的 View 框架和基於類的字典,如下所示:

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

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

我是否只在 DetailView 類下的模型字段中使用字典?

如果我輸入錯誤,請原諒。

謝謝

這是完全可能的。

但是,如果您決定不擁有數據庫,您將失去使用許多contrib功能(如帳戶、后端)的機會。 從“空”項目(使用django-admin startproject ),您需要刪除TEMPLATE中的大部分INSTALLED_APPSMIDDLEWAREcontext_processors ,將DATABASES設置為空dict() (請參閱@spectras 的評論),也許還有其他一些設置在上面修修補補。

更新:(由於您對問題進行了重大修改,因此這里有更多詳細信息)

如果沒有數據庫,使用django.db.models沒有多大意義(注意models包路徑中的db )。 一些通用視圖(如DetailView )是為了在使用模型時DetailView您的時間,因此使用它們也沒有多大意義。

如果您不需要保存任何TestClass實例並且它們的生命周期僅限於生成對單個用戶請求的響應,那么根本不使用 django 模型應該沒問題。 使用TemplateView就足夠了。

    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_template.html

    {{ my_object.foo }} {{ my_object.bar }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM