如何在django中将表的内容显示为表?

如何在django中将表的内容显示为表?,django,django-models,django-forms,django-templates,Django,Django Models,Django Forms,Django Templates,我制作了一个简单的django应用程序。在my models.py中,我定义了一个表- class events(models.Model): id_campaign = models.CharField(default='newevent',max_length=100) status = models.CharField(default='100',max_length=100) name = models.CharField(default='100',max_le

我制作了一个简单的django应用程序。在my models.py中,我定义了一个表-

class events(models.Model):
    id_campaign = models.CharField(default='newevent',max_length=100)
    status = models.CharField(default='100',max_length=100)
    name = models.CharField(default='100',max_length=100)
这是我的观点-

from django.shortcuts import render

# Create your views here.

from django.views.generic import TemplateView

from django.shortcuts import render
from website.models import *
from website.models import events


from django.views.generic import ListView

class HomePageView(TemplateView):
    template_name = 'base.html'


class AboutPageView(TemplateView):
    template_name = 'about.html'

class ContactPageView(TemplateView):
    template_name = 'contact.html'

class Success(TemplateView):
    template_name = 'success.html'
    def MyView(self, request):
        query_results = events.objects.all()
        return render(request, self.template_name)
这是success.html-

{% if user.is_authenticated %}
<header>
    <a href=" {% url 'logout'%}">Logout</a>
</header>

{% block content %}
<h2>you are logged in successfully. this is your personal space.</h2>

<table>
    <tr>
        <th>id_campaign</th>
        <th>status</th>
        <th>name</th>
   </tr>
    {% for item in query_results %}
    <tr>
        <td>{{ item.id_campaign }}</td>
        <td>{{ item.status }}</td>
        <td>{{ item.name }}</td>
    </tr>
    {% endfor %}
</table>

{% endblock %}

{% else %}

<h2>you are not logged in.</h2>

{%endif %}
如果用户名为“xyz”,则我想显示查询结果中的值,如果用户名为“abc”,则我不想显示


顺便一提-我对django绝对是新手

您以错误的方式使用了
TemplateView
。 您需要覆盖TemplateView中的
get\u context\u data()
方法

class Success(TemplateView):
    template_name = 'success.html'

    def get_context_data(self, **kwargs):
        context = super(Success, self).get_context_data(**kwargs)
        query_results = events.objects.all()
        context.update({'query_results': query_results})
        return context

现在应该可以正常工作了。

您误解了基于类的视图是如何工作的。您的MyView方法从未被调用(尽管请注意,即使调用了MyView方法,它实际上也不会将
query\u结果
发送到模板)

您需要定义
get\u context\u data
方法,该方法返回字典:

class Success(TemplateView):
    template_name = 'success.html'
    def get_context_data(self, *args, **kwargs):
        query_results = events.objects.all()
        return {'query_results': query_results}
但请注意,更好的方法是使用适当的通用视图;要显示项目列表,请使用ListView

class Success(ListView):
    template_name = 'success.html'
    model = events

在你的模板中做
{%for events\u list%}

非常感谢!成功了。我刚从django开始。我实际上是两天前开始的。:)谢谢!成功了。我刚从django开始。我实际上是两天前开始的。:)嘿,兄弟!如果我需要检查用户名并根据用户显示结果,我该如何做?如果request.user.is_authenticated():username=request.user.username。如果用户名为“xyz”,则显示某些内容;如果用户名为“abc”,则显示其他内容。
class Success(ListView):
    template_name = 'success.html'
    model = events