2017-02-13 42 views
0

我正在Django網站上工作(我的第一個),我試圖向表單添加上下文。我無法看到模板中的變量,所以我簡化爲一個字符串變量,但仍然沒有結果。我並不完全清楚自己做錯了什麼,所以我希望得到一些幫助。Django 1.10無法變爲上下文

這裏的觀點:

from django.shortcuts import render 
from django.http import HttpResponse 
from django.template.context import RequestContext 

from forms import LoginForm 

# Create your views here. 

def index(request): 
    return HttpResponse("Index page for Chefables portal") 

def login(request): 

    lFormContext = RequestContext(request,{'mystring' : 'mystring'}) 
    return render(request, 'login.html', lFormContext) 

和這裏的模板:

{% extends 'base.html' %} 
{% load i18n %} 
{% load debug_tags %} 


{% block container %} 
    <div class="content"> 

     {% variables %} 

     {% if form.errors %} 
      <div class="alert alert-danger"> 
       <p><strong>{% trans "Oh snap!" %}</strong> {% trans "Please enter a correct username and password. Note that both fields are case-sensitive." %}</p> 
      </div> 
     {% endif %} 
     <form action="{% url 'login' %}" method="post" class="form-horizontal" role="form">{% csrf_token %} 
      <legend><span class="col-sm-offset-1">{% trans 'Log in' %}</span></legend> 
      {% for field in form.fields %} 
       <p>iterating over form.fields </p> 
       {% include 'registration/form_field.html' %} 
      {% endfor %} 
      <div class="form-group"> 
       <div class="col-sm-offset-2 col-sm-10"> 
        <button type="submit" class="btn btn-default">{% trans 'Log in' %}</button> 
        &nbsp;<button type="reset" class="btn">{% trans 'Cancel' %}</button> 
       </div> 
      </div> 
     </form> 
     <p><a href="{% url 'resetPassword' %}">{% trans "Reset my password" %}</a></p> 
     <script type="text/javascript"> 
      $(function(){ 
       $(".alert-message").alert(); 
       $('#mainForm').submit(function(){ 
        $('#submit').button('loading'); 
       }) 
      }); 
      document.forms[1].elements[2].focus(); 
     </script> 
    </div> 
{% endblock %} 

我希望從{%變量%}輸出表現出一定的參考,我加入了「的MyString」在視圖中,但沒有額外的變量添加。我有點需要弄清楚這一點。

下面是從{%變量%}

[ 'DEFAULT_MESSAGE_LEVELS' 的輸出, '假', '無', '真', '塊', u'csrf_token」, '消息', 'perms',u'request','user',u'view']

我不知道什麼是錯的 - 我正好添加到上下文字典中。有沒有可能會丟失的設置?這看起來很基本。

這裏是我的模板設置:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [BASE_DIR + '/portal/templates/portal'], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

任何幫助或建議,不勝感激。謝謝。

回答

2

render需要一個字典,而不是RequestContext;它自己生成RequestContext。

def login(request): 
    lFormContext = {'mystring' : 'mystring'} 
    return render(request, 'login.html', lFormContext) 
+0

丹尼爾,謝謝你的回答。我已經嘗試過你的建議,改爲字典,但仍然沒有看到模板中的變量。我還描述了模板中的請求對象,但沒有在那裏看到變量。我會認爲設置丟失或不正確。情況會是這樣嗎? TIA。 Bob –

+0

不,不涉及任何設置。你確定這是正確的觀點嗎?您使用的是哪個網址,以及您的urls.py的外觀如何?是否有任何其他視圖呈現該模板? (說實話,你原來的代碼本來會給TypeError的。) –

+0

這是我迄今爲止創建的唯一視圖:/portal/accounts/login這裏是urls.py的對應行: url(r '^ accounts/login $',TemplateView.as_view(template_name =「login.html」),name ='login'), –