Django 如何呈现由CreateView自动创建的表单(在模板标记中) 如何渲染由CreateView CBV自动创建的表单? 安装程序

Django 如何呈现由CreateView自动创建的表单(在模板标记中) 如何渲染由CreateView CBV自动创建的表单? 安装程序,django,django-forms,django-templates,django-views,Django,Django Forms,Django Templates,Django Views,视图.py 来自django.contrib.auth.mixins导入登录所需的mixin 从django.views.generic.edit导入CreateView 从.models导入日志 从django.url反向导入 类CreateJournal(LoginRequiredMixin,CreateView): 模型=日记账 模板名称='journals/journal\u list.html' 字段=('journal_name',) def get_success_url(自我):

视图.py

来自django.contrib.auth.mixins导入登录所需的mixin
从django.views.generic.edit导入CreateView
从.models导入日志
从django.url反向导入
类CreateJournal(LoginRequiredMixin,CreateView):
模型=日记账
模板名称='journals/journal\u list.html'
字段=('journal_name',)
def get_success_url(自我):
返回反向('主')
def表单_有效(自身、表单):
form.instance.journal\u user=self.request.user
返回super(CreateJournal,self)。form_有效(form)
def获取上下文数据(自身,**kwargs):
context=super(CreateJournal,self)。获取上下文数据(**kwargs)
上下文['Journals']=Journal.objects.filter(Journal\u user=self.request.user)
返回上下文
url.py

urlpatterns=[
路径(“”,CreateJournal.as_view(),name='journals'),
路径(“”,JournalEntriesList.as_view(),name='to-journal-entries'),
]
正如你所看到的,我没有提到一个具体的表格,这是因为我没有。CreateView会自动创建一个。如您所见,此视图(它现在执行两项任务,帮助用户创建一个对象,同时显示所有对象)现在呈现为“to journals/journal_list.html”

我想在“主页”或任何其他页面上显示相同的内容(视图和表单)

当前模板标记仅从数据库(上下文)获取数据 我当前的尝试如下所示:


journal_tags.py

register=template.Library()
@register.inclusion\u标记('template\u tags/journal\u list.html',接受\u context=True)
def get_日志(上下文):
journals=Journal.objects.filter(Journal\u user=context['request'].user)
返回{'journals':journals}
这将成功地将所有现有日志呈现到我想要的任何页面。现在,我该如何渲染窗体,即CreateView为我创建的窗体

失败的方法 我尝试的一种方法是将for参数添加到函数中,如下所示:


journal_tags.py

@register.inclusion\u标记('template\u tags/journal\u list.html',接受\u context=True)
def get_日志(上下文):
journals=Journal.objects.filter(Journal\u user=context['request'].user)
返回{
“期刊”:期刊,
“形式”:CreateJournal,
}
这不起作用,因为CreateJournal是一个视图而不是表单我的问题是如何呈现由
类CreateJournal(LoginRequiredMixin,CreateView)
创建的表单?


谢谢你花时间看这个。我真的很感谢我们社区的帮助!祝你今天愉快

journal\u tags.py

register=template.Library()
@register.inclusion\u标记('template\u tags/journal\u list.html',接受\u context=True)
def get_日志(上下文、自身):
journals=to_journal.objects.filter(journal_user=context['request'].user)
返回{
“期刊”:期刊,
“形式”:日志形式
}
其中JournalForm是在models.py中创建的ModelForm

class日志格式(ModelForm):
类元:
模型=至日记帐
字段=['journal_name']

CreateView动态创建的表单仅是模型的默认模型表单,
Journal
,它使用。该类是
form\u class=django.forms.modelform\u工厂(Journal,fields=self.fields)
。因此,您可以使用
form\u class()
实例化空表单。或者你可以自己定义一个。