0

在我的django应用程序中,我有一个index页面列出了一些动态的摘要信息(基于数据库中的一些用户输入数据)。我已将其编码如下

视图.py

def custom_render(request,context,template):
    req_context=RequestContext(request,context)
    return render_to_response(template,req_context)

@login_required
def index(request, template_name):
    summary_info = get_summary(...)
    return custom_render(request,{'summary':summary_info},template_name)

网址.py

urlpatterns=patterns('', 
     ...
    url(r'^$', 'myapp.views.index',dict(template_name = 'myapp/index.html'), name = 'home'),
...

现在,我想在主页上包含一个由 matplotlib 生成的图表图像。所以,当用户请求索引页面 url 时,他可以看到摘要信息和图表

我已经编写了 index.html 如下

{% extends "myapp/base.html" %}
....
<div id='summary'>
{# here display the summary #}
...
</div>

<div id='chart'>
<img class="chartimage"src="{% url myapp_render_chart %}"            
    alt="chart"            
   />
</div>

图表视图是

def render_chart(request):
    data = get_data(request.user)
    canvas = None
    if data:
        canvas = create_piechart(data)
    response = HttpResponse(content_type = 'image/png')
    if canvas:
        canvas.print_png(response)
    return response

import matplotlib.pyplot as plt
def create_piechart(data,chartsize=(16,16)):
    ...
    figure = plt.figure(figsize = chartsize)
    plt.pie(fracs, labels=labels, autopct='%1.1f%%', shadow=True)        
    canvas = FigureCanvas(figure)
    plt.close(figure)
    return canvas

我不确定应该如何进行 urlmapping。urlr'^$',已经映射到索引页面。但是我需要创建一个url(...)inurlpatterns以便视图 render_chart() 与名称相关联,myapp_render_chart因此可以在{% url %}tag 中调用。有人可以帮我吗?

4

1 回答 1

1

所以你只是想要另一个 url 映射?它与您已经拥有的不会有太大不同。例如:

urlpatterns = patterns("myapp.views",
    url(r'^$', 'index',dict(template_name = 'myapp/index.html'), name = 'home'),
    url(r'^kick-ass-chart/$', 'render_chart', name='myapp_render_chart'),
)
于 2013-05-19T16:40:12.303 回答