DJANGO 2.0显示数据库中的数据

时间:2018-03-27 22:05:51

标签: django django-views django-database

我是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)

1 个答案:

答案 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 }}