如何从模板传递jquery datepicker到python Django中查看?

时间:2014-11-10 15:18:30

标签: jquery python mysql django datepicker

我正在尝试使用jquery-ui,datepicker将日期值传递给views.py,其中我已设置查询以使用pyodbc从mysql中提取数据,但不知道我在这里缺少什么。我是Django的新手。请帮忙。

模板

<form action = "" method="POST">{% csrf_token %}
  <p>Date: <input type="text" id="datepicker"></p>
</form>

datepicker.js

var stringDate = '2014-09-01T12:00:00+00:00'
var date = new Date(stringDate)
$(function() {
  $( "#datepicker" ).datepicker({
    minDate: date,
    maxDate: "dateToday",
    dateFormat: 'yy-mm-dd',});
});

views.py

DateInput = partial(forms.DateInput, {'class': 'datepicker'})

class DateRangeForm(forms.Form):
    data_input = forms.DateField(widget=DateInput())

def rev_dollar(request):

    if request.method == "POST":
      mydate = DateRangeFrom()
    else: 
      mydate = now.date().isoformat()

    con_a= pyodbc.connect('DSN=')
    sql = """
          select a, b from table 
          where date = %s , (mydate) 
          """
    pd.read_sql(sql, con_a)

我想要的是如果没有选择表单,那么 mydate = curdate()&lt; - 在sql中,如果选择了日期,那么 mydate ='2014-10-01'< / strong>&lt; - 日期选择

2 个答案:

答案 0 :(得分:3)

您需要阅读有关Django表单的非常好的文档。

您的代码中没有任何一点是您将POST请求的值传递给表单。此外,您没有做任何事情来从表单中获取日期。因此,毫不奇怪,您的代码无效。

以下是您需要做的事情:

mydate = now.date().isoformat()
if request.method == 'POST':
    form = DateRangeFrom(request.POST)
    if form.is_valid():
        mydate = form.cleaned_data('data_input')

此外,您需要为HTML字段设置name属性。虽然你已经定义了一个表单,但你应该使用它:

<form action = "" method="POST">{% csrf_token %}
    {{ form.data_input }}
    <input type="submit">
</form>

答案 1 :(得分:1)

除了@Daniel Roseman回答

data_input = forms.DateField(auto_now_add=True, widget=forms.DateInput(attrs={'class':'datepicker'}))