django类页面视图不呈现模板代码

时间:2017-02-19 06:40:42

标签: django templates django-forms django-views

我想使用基于类的视图并浏览了django文档,我得到了无错误的消息,但结束了一个空模板。我让它与非分类的观点一起工作。如何重新格式化代码以便呈现模板?该模板包括标题,一些标题,导航菜单,用于选择不同语言的指令的标志, 后跟一个显示标志,策略名称字段和复选框控件的表单。我认为视图中的初始= {'key': 'value'}形式不正确,但我不知道要替换它的内容。提前谢谢。

forms.py

from django import forms 
from policytracker.models import Flag, Label_Links

class PolicyStartForm( forms.Form ):
    flags = Flag.objects.all()
    policy   = Label_Links.objects.all().filter(iso_language='en')[0]

    frm_policy1_name=[]

    for flag in flags:
        frm_policy1_name.append(forms.CharField(max_length=40))       

    policy_dict = { 'new_policy_link' :policy.nav_section_new_policy_link,
                   'new_policy_label' :policy.nav_section_new_policy_label,
                    'graphs_link':policy.nav_section_graphs_link,
                 'graphs_label'  :policy.nav_section_graphs_label,
                 'account_link'  :policy.nav_section_account_link,
                 'account_label' :policy.nav_section_account_label,
                 'policy_list_link':policy.nav_section_list_policies_link,
               'policy_list_label':policy.nav_section_list_policies_label, 
               'login_link'       :policy.nav_section_login_link,
                 'login_label'    :policy.nav_section_login_label,
               'new_policy1_heading' :policy.new_policy1_heading,
                 'new_policy1_title_label':policy.new_policy1_title_label,
    'policy_needs_translation_label':policy.new_policy1_needs_trans_label,
           'policy1_submit_label': policy.new_policy1_submit_button_label,
               'policy1_tip_msg' :policy.new_policy1_tip_msg,
                 't_logged_in'        :True,
                 'frm_policy_name'    :frm_policy1_name,
                 't_flags'            :flags }
</code>


<code>
views.py

# coding=utf-8
from django.shortcuts import render
from django.http import HttpResponseRedirect
from policytracker.forms import LoginForm, PolicyStartForm
from policytracker.models import Flag, Label_Links
from django.views import View

class PolicyStartView(View):
    template_name = 'policystart.html'
    initial = {'key': 'value'}
    form_class = PolicyStartForm

    def get(self, request, *args, **kwargs):
        form = self.form_class(initial=self.initial)
        return render(request, self.template_name, {'form': form})
</code>

<code>
policystart.html

{% extends "policy-base.html" %}

{% block navsection %}  
<div class="container top">
    <div class="row">
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
            <h1 class="text-center">{{ new_policy1_heading }}</h1>
        </div>
    </div>
    {% if t_policy_details %}
    <div class="row">
        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
            <h4 class="text-nowrap text-left" id="week_start">2017-02-11</h4></div>
        <div class="col-md-4 col-xs-4">
            <h4 class="text-center" id="week_number">Week 1</h4></div>
        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
            <h4 class="text-nowrap text-right" id="week_end">2016-09-18</h4></div>
    </div>
    {% endif %}
    <div class="row">
        <div class="col-md-12">
            <nav class="navbar navbar-inverse">
                <div class="container-fluid">
                    <div class="navbar-header"><a class="navbar-brand hidden navbar-link" href="#"> Policies</a>
                        <button class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navcol-1"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
                    </div>
                    <div class="collapse navbar-collapse" id="navcol-1">
                        <ul class="nav navbar-nav navbar-right">
                            <li class="hidden" role="presentation"><a href="{{ new_policy_link }}">{{ new_policy_label }}</a></li>
                            <li {% if not t_logged_in %} class="hidden" {% endif %} role="presentation"><a href="{{ graphs_link }}">{{ graphs_label }}</a></li>
                            <li {% if not t_logged_in %} class="hidden" {% endif %} role="presentation"><a href="{{ account_link }}">{{ account_label }}</a></li>
                            <li role="presentation"><a href="{{ policy_list_link }}">{{ policy_list_label }}</a></li>
                            {% if not t_logged_in %} <li role="presentation"><a href="{{ login_link }}">{{ login_label }}</a></li> {% endif %}
                        </ul>
                    </div>
                </div>
            </nav>
        </div>
    </div>
    {% include "pol-new1-lang.html" %}    
</div>

<div class="container middle-container">
    <div class="row">
        <div class="col-lg-1 col-md-1 col-sm-1 col-xs-3">
            <p> </p>
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-8">
            <h4>{{ new_policy1_title_label }}</h4>
        </div>
        <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
            <h4 class="text-center">{{ policy_needs_translation_label }}</h4>
        </div>
    </div>

    <form method="POST">
        {% csrf_token %}
        {% load static %}

        {% for f in t_flags %}
        <div class="row flag">
            <div class="col-lg-1 col-md-1 col-sm-1 col-xs-2"><img src="{% static f.flag_image_filename %}"></div>
            <div class="col-lg-6 col-md-6 col-sm-6 col-xs-9">
                <input class="form-control" type="text" name="policytitle">
            </div>
            <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
                <input class="form-control" type="checkbox" name="needstranslation">
            </div>
        </div>
        {% endfor %}

        <div class="row enter">
            <div class="col-lg-1 col-md-1 col-sm-1 col-xs-3">
                <p> </p>
            </div>
            <div class="col-lg-9 col-md-9 col-sm-9 col-xs-8">
                <button class="btn btn-default" type="submit">{{ policy1_submit_label }}</button>
            </div>
        </div>
    </form>

    <div class="row enter">
        <div class="col-lg-1 col-md-1 col-sm-1 col-xs-3">
             <p> </p>
        </div>
        <div class="col-lg-9 col-md-9 col-sm-9 col-xs-8">
             <p>{{ policy1_tip_msg }}</p>
        </div>
    </div>
</div>
{% endblock %}

</code>

1 个答案:

答案 0 :(得分:0)

您在模板中使用了大量变量,但实际上并没有将任何变量发送到上下文中;您的视图唯一传递的是form。如果您想使用new_policy1_headingpolicy_needs_translation_labelt_flags之类的内容,则需要在视图中定义它们并将其从那里发送到模板。

实际上,您似乎完全误解了表单和观点的工作。您当前放在表单中的所有代码实际上都属于视图,您应该使用policy_dict作为模板上下文。它看起来根本不需要表单类。

即使在那里,你做的工作也比你需要的要多得多。无需单独发送策略对象的所有特定字段;只需发送policy,然后在模板中即可{{ policy.policy_needs_translation_label }}等。