2017-02-13 2 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', 'False', 'None', 'True', 'блок', 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 принимает dict, а не RequestContext; он генерирует сам RequestContext.

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

Daniel, спасибо, что ответил. Я попробовал ваше предложение, перейдя на диктофон, но все еще не вижу переменную в шаблоне. Я также описал объект запроса в шаблоне, но не вижу там переменной. Я думаю, что настройка отсутствует или неверна. Может ли так быть? ТИА. Bob –

+0

Нет, никаких настроек нет. Вы уверены, что это правильный взгляд? Какой URL-адрес вы используете, и как выглядит ваш urls.py? Есть ли другие представления, которые отображают этот шаблон? (Честно говоря, ваш исходный код дал бы TypeError в любом случае.) –

+0

Это единственное представление, которое я создал до сих пор: /portal/accounts/login и вот соответствующая строка из urls.py: url (r '^ accounts/login $', TemplateView.as_view (template_name = "login.html"), name = 'login'), –

Смежные вопросы