2017-02-19 108 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

我明白了。謝謝。 –