我在Django中有一个小项目(仍在学习它和Python)并且有一些关于在Django中传递变量的问题。
例如,用户输入一些数据,项目处理它,然后计算一些简单的统计数据。我想通过下拉按钮传递“年”变量,以便用户可以选择应该生成报告的年份。
代码的某些部分:
Models.py:
class Fms(models.Model):
...
date = models.DateField()
department = models.CharField(max_length=255, verbose_name='Department')
Views.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传递它还是有另一种更简单的方法?
此致
答案 0 :(得分:2)
更新您的网址格式以捕获年份,更新您的视图以将年份作为参数,并更新您的模板以构建包含年份的网址:
# 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>