Naresh
Naresh

Reputation: 1962

Django Form is not visible in Inherited template

I am using template inheritance in my django project. I used form in my base html page and submit button, When i inherit base template to another template form get disappeared but submit button is still there. I have below templates.

base.html

<head>
    {% load static from staticfiles %}
    <link rel="stylesheet" href="{% static "bootstrap.css" %}">
</script>
</head>
<body>
     {% block option %}
    <div class="row">
    <div class="col-lg-3">
        <form method = "post" action="">
        {% csrf_token %}
        {{form}}
        <input type="submit" value="Submit" />
        </form>
        </div>
    </div>
    {% endblock %}
    <div class="row">
        {% block content %}{% endblock %}
    </div> 
</body>

chart.html

{% extends 'base.html' %}
{% block content %}
<head>
    {% load static from staticfiles %}
    <link rel="stylesheet" href="{% static "bootstrap.css" %}">
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
    google.load("visualization", "1", {packages:["corechart"]});
</script>
</head>
    <div id="container" align="center">
        {{ column_chart.as_html }} 
{% endblock %}

How can i make form visible there in chart html??

EDIT: Added Views

views.py

def select_chart_form(request):
    form = SelectChart(request.POST)
    if form.is_valid():
        if (str(form.cleaned_data['status']) == '1'):
            #print "Hello Naresh reverse('chart1')"
            return HttpResponseRedirect('/chart1/')
        if (str(form.cleaned_data['status']) == '2'):
            return HttpResponseRedirect('/chart2/')
    context = {
               'form' : form
               }
    return render(request, 'base.html', context)

def video_by_user(request):
    analysis = VideoData.objects.annotate(watches_count = Count('user')).order_by('-watches_count')[:10]
    data_source = ModelDataSource(analysis,fields=['video_name', 'watches_count'])
    column_chart = gchart.ColumnChart(data_source,options={'title': "Top 10 Videos watched by No. Of Users"})
    context = {
                "data_source": data_source,
                "column_chart": column_chart,
               }
    return render_to_response('chart.html', context)

I am calling video_by_user method..after click on submit button.

Upvotes: 1

Views: 440

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599590

The select_chart_form and video_by_user views are completely separate. The first one renders just base.html, and supplies the form variable when it does so. The second one renders chart.html, which inherits from base.html, but it only supplies the variables needed for chart.html itself: it doesn't provide the form needed for base.html. You will need to supply that in video_by_user.

Upvotes: 1

Related Questions