Django-用类和视图诊断问题



我正在尝试使用Django表单和模板将变量发送到html。

这是我的密码。。。

class AdminView(TemplateView):
template_name = 'admin.html'
def admin(self, request):
    template = 'admin.html'
    data = Quiz.objects.all()
    form = AdminForm(request.POST)
    context = {"form": form}
    context['admin'] = data
    # return render(request, template, context)
    return render_to_response(context)

这个代码出了什么问题?为什么这个变量没有出现在网站上。

行context={"form",form}在我的IDE中被高亮显示为and error。

错误:此词典创建可以重写为词典文字。

这个看起来怎么样?

class AdminView(TemplateView):
    template_name = 'admin.html'
def post(self, request):
    template = 'admin.html'
    data = Quiz.objects.all()
    form = AdminForm(request.POST)
    context = {"form": form}
    context['admin'] = data
    return render(request, template, context)

不幸的是仍然不起作用?

这是html代码。。。

{% if request.user.is_authenticated%}
    {% if request.user.username  == "teacher"  %}
        <!DOCTYPE html>
        <html lang="en">
        <head>
            {% load staticfiles %}
            <meta charset="UTF-8">
            <title>Admin</title>
            <link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" />
        </head>
        <body>
        {% include 'navbar.html' %}
        Admin Test
        {{ admin }}

        </body>
        </html>
    {% endif %}

这只是一个样式问题,与实际问题无关。

你的代码有几个真正的问题。首先,不能只定义像admin这样的任意方法并期望它被调用。您需要在此处定义getpost

第二个是render_to_response需要被赋予模板名称。您使用render注释掉的版本是正确的。

小心识别,如果你想向模板发送额外的上下文,你可以使用get_context_data()方法,比如:

class AdminView(TemplateView):
    template_name = 'admin.html'
    '''
    This is for a GET request
    '''
    def get_context_data(self, **kwargs):
        context = super(AdminView, self).get_context_data(**kwargs)
        context['admin'] = Quiz.objects.all()
        context['form'] = AdminForm()
        return context
    '''
    This is for a POST request
    '''
    def post(self, request, *args, **kwargs):
        form = AdminForm(request.POST)
        if form.is_valid():
            # do something if form data is valid
        else:
            # do something if form data is not valid
        return render(request, 'admin.html', context)

但是,如果您想要处理表单,我建议您使用FormView而不是TemplateView

最新更新