2017-02-19 72 views
-1

我想使用基于类的视图,并通过了django文档,我得到了noerror消息,但收到了一个空模板。我曾与非分类的观点合作。如何重新格式化代码以使其呈现模板?该模板由一个标题,一些标题,一个导航菜单,用于选择不同语言的指令的标志, 后跟一个表格,显示一个标志,策略名称字段和复选框控件。我认为视图中最初的= {'key': 'value'}形式不正确,但我不知道用什么来代替它。提前致谢。django class page view not rendering template code

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> 

回答

0

您在模板中使用了一些变量,但实际上并没有将它们中的任何一个发送到上下文;您的观点唯一通过的是form。如果你想要使用像new_policy1_heading,policy_needs_translation_labelt_flags这样的东西,你需要在你的视图中定义它们并将它们从那里发送到模板。

其实,看起来你完全误解了表单和视图的工作。您目前放置在表单中的所有代码实际上都属于该视图,您应该使用policy_dict作为模板上下文。它看起来并不像你需要一个表格课程。

尽管如此,您还是做了比您需要的更多的工作。不需要单独发送策略对象的所有特定字段;只需发送policy,然后在模板中,你可以做{{ policy.policy_needs_translation_label }}

+0

我明白了。谢谢。 –