我是django的新手,我无法打印到html页面。如何将从数据库中检索到的信息显示在空白的html页面中?
blank.hml
<body>
<h1>Classes Added</h1>
{% for i in classInfo %}
<h1>{{ i.label }}</h1>
{% endfor %}
</body>
models.py
class EventType(models.Model):
'''
Simple ``Event`` classifcation.
'''
objects = models.Manager()
abbr = models.CharField(_('abbreviation'), max_length=4, unique=False)
label = models.CharField(_('label'), max_length=50)
class Meta:
verbose_name = _('event type')
verbose_name_plural = _('event types')
def __str__(self):
return self.label
views.py
def displayClass(TemplateView):
templateName = 'blank.html'
def get(self,request):
form = ClassCreationForm()
classInfo = EventType.objects.all()
print(classInfo)
args = {'form' : form, 'classInfo' : classInfo}
return render(request,self,templateName,{'form':form})
forms.py
class ClassCreationForm(forms.Form):
classroom = forms.CharField(label = 'Class Name',max_length=50)
答案 0 :(得分:0)
我认为您需要了解views.py文件的工作原理。您应该将业务逻辑包含在其中,然后将其传递给要呈现的模板。它可以通过代码中包含的返回功能传递。虽然,在您的返回功能中,您只传递了一个templatename和您想要渲染的表单。没有与EventType查询集相关的数据传递给您的模板,因为它没有包含在返回上下文中。
现在,我个人喜欢使用Django Class-Based-generic-Views(CBV),因为很多代码都包含在那里。我不确定你是否已经到了学习这些的地步,但我会检查它们。
如果您想在此添加表单,可以添加FormMixin,这是Django提供的通用mixins的一部分。
如何使用通用视图构建view.py代码如下:
from django.views import generic
from django.views.generic.edit import FormMixin
from YourApp.forms import ClassCreationForm
from YourApp.models import EventType
class DisplayClass(FormMixin,generic.ListView):
template_name = 'blank.html'
form_class = ClassCreationForm
def get_queryset(self, *args, **kwargs):
return EventType.objects.all()
如果您决定使用基于类的视图,则需要在urls.py文件中添加其他条件(.as_view()):
from django.urls import path
from . import views
urlpatterns = [
path('yoururlpath/', views.DisplayClass.as_view()),
]
然后在你的模板中:
{% for i in object_list %}
<h1>{{ i.label }}</h1>
{% endfor %}
渲染表格......
{{ form.as_p }}