我正在尝试使用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; - 日期选择
答案 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'}))