[英]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_APPS
、 MIDDLEWARE
、 context_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.