Django表单在继承的模板中不可见

时间:2015-07-23 11:14:32

标签: python django django-templates

我在django项目中使用模板继承。我在我的基本html页面和提交按钮中使用了表单,当我将基本模板继承到另一个模板表单时,消失了但是提交按钮仍然存在。我有以下模板。

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 %}

如何在图表html中显示表单?

编辑:添加了视图

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)

我正在调用video_by_user方法..之后点击提交按钮。

1 个答案:

答案 0 :(得分:1)

select_chart_formvideo_by_user观点完全分开。第一个只渲染base.html,并在它执行时提供form变量。第二个渲染chart.html,它继承自base.html,但它只提供chart.html本身所需的变量:它不提供base.html所需的形式。您需要在video_by_user

中提供