1

我在 Django 中进行了一个小项目(仍在学习它和 Python),并且对在 Django 中传递变量有一些疑问。

例如,用户输入一些数据,项目对其进行处理,然后计算一些简单的统计数据。我想通过下拉按钮传递一个“年份”变量,以便用户可以选择应该生成报告的年份。

部分代码:

模型.py:

class Fms(models.Model):
...
date = models.DateField()
department = models.CharField(max_length=255, verbose_name='Department')

视图.py:

def raport(request):
raport = Fms.objects.filter(date__year='2013').extra(select={'month': "EXTRACT(month FROM date)"}).values('month', 'department').order_by('month').annotate(Count('department'))
return render_to_response ('fmstat/raport.html',
                           {'raport': raport},
                           context_instance=RequestContext(request))

测试按钮:

<div class="bs-docs-example">
    <ul class="nav nav-pills">
        <li class="dropdown">
            <a class="dropdown-toggle" id="drop4" role="button" data-toggle="dropdown" href="#">Select year for report <b class="caret"></b></a>
            <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop4">
                <li role="presentation"><a role="menuitem" tabindex="-1" href="{% url 'fmstat.views.raport' %}">2012</a></li>

那么我该怎么做呢?通过 URL 传递它还是有另一种更简单的方法?

问候

4

1 回答 1

4

更新您的 url 模式以捕获年份,更新您的视图以将年份作为参数,并更新您的模板以使用年份构建 url:

# urls.py
urlpatterns = ('',
   url(r'^raport/(?<year>\d{4})/?', "fmstat.views.raport"),
   # ...
   )

# views.py 
def raport(request, year):
    raport = Fms.objects.filter(date__year=year).extra(...)
    # ...

# template.html
 (...)
 <li role="presentation">
    <a role="menuitem" tabindex="-1" 
        href="{% url 'fmstat.views.raport' '2012' %}">2012</a>
 </li>
于 2013-04-19T09:06:53.650 回答