我正在尝试在django中创建自定义日历。 它有下一个和上一个按钮,分别可以查看下个月或上个月。 我在jquery,ajax函数中动态添加了日期,年份和月份名称。 当用户单击NEXT按钮时,我希望当前加载的月份名称返回到views.py.I我无法捕获月份名称,因为它动态添加。 我的代码是:Search.html
$("#next").click(function()
{
var input_string = $("#cal_mon").val();
alert("i======",input_string);
console.log("i",input_string);
$.ajax({
url : "/getnextmonth/",
type : "POST",
dataType: "json",
data :
{
client_response : input_string,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success : function(json)
{
var date = json.server_response;
var day = json.server_response1;
var year = json.server_response2;
var month = json.server_response3;
var list_months = json.server_response4;
var dates_as_per_daysinmonth = json.server_response5;
var body = document.getElementsByTagName('body')[0];
var table = document.getElementById("eve_calendar");
var tbody = document.getElementById('tbody');
$("#row_1").empty();
$("#row_2").empty();
$("#row_3").empty();
$("#row_4").empty();
$("#row_5").empty();
var row1 = document.getElementById("row_1");
var row2 = document.getElementById("row_2");
var row3 = document.getElementById("row_3");
var row4 = document.getElementById("row_4");
var row5 = document.getElementById("row_5");
<!-- Month name -->
var tr_mon = document.getElementById("event_month");
var td_mon = document.getElementById("cal_mon");
var td_nextb = document.getElementById("next_b");
//alert(month);
<!-- leap year -->
if(year%400 ==0)
{
//// alert("leap year");
}
else if (year%100 ==0)
{
// alert("not leap year");
}
else if (year%4 ==0)
{
// alert("leap year");
}
else
{
// alert("not");
}
<!-- alert(month_name); -->
for (var i=0;i<month;i++)
{
if(i==month-1)
{
td_mon.textContent = list_months[i] + " "+ year;
// document.getElementById("cal_mon").value =list_months[i];
}
}
tr_mon.appendChild(td_mon);
tr_mon.appendChild(td_nextb);
<!-- no. of days in Month -->
var no_of_days;
if(month!=2)
{
if(month==9||month==4||month==6||month==11)
no_of_days=30;
else
no_of_days= 31;
}
else {
no_of_days= (year%4=="" && year%100!="" ? 29 : 28);
}
// alert(no_of_days);
<!-- add dates as per month-->
var flag2=1;
//tbody.appendChild(tr_mon);
for (var n =0;n < dates_as_per_daysinmonth.length;n++)
{
for(var m=0;m<dates_as_per_daysinmonth[n].length;m++)
{
console.log(dates_as_per_daysinmonth[n][m]);
if(flag2==1)
{
var cell = document.createElement("td");
if (dates_as_per_daysinmonth[n][m]==0)
{
}
else
cell.textContent = dates_as_per_daysinmonth[n][m];
row1.appendChild(cell);
}
if(flag2==2)
{
var cell = document.createElement("td");
if (dates_as_per_daysinmonth[n][m]==0)
{
}
else
cell.textContent = dates_as_per_daysinmonth[n][m];
row2.appendChild(cell);
}
if(flag2==3)
{
var cell = document.createElement("td");
if (dates_as_per_daysinmonth[n][m]==0)
{
}
else
cell.textContent = dates_as_per_daysinmonth[n][m];
row3.appendChild(cell);
}
if(flag2==4)
{
var cell = document.createElement("td");
if (dates_as_per_daysinmonth[n][m]==0)
{
}
else
cell.textContent = dates_as_per_daysinmonth[n][m];
row4.appendChild(cell);
}
if(flag2==5)
{
var cell = document.createElement("td");
if (dates_as_per_daysinmonth[n][m]==0)
{
}
else
cell.textContent = dates_as_per_daysinmonth[n][m];
row5.appendChild(cell);
}
//alert("dt====",dates_as_per_daysinmonth);
}
// tbody.appendChild(row2);
/// }
flag2=flag2+1;
}
// tbody.appendChild(tr_mon);
tbody.appendChild(row1);
tbody.appendChild(row2);
tbody.appendChild(row3);
tbody.appendChild(row4);
tbody.appendChild(row5);
table.appendChild(tbody);
body.appendChild(table);
},
error : function(xhr,errmsg,err)
{
alert(xhr.status + ": " + xhr.responseText);
}
});
});
</script>
我的views.py函数:::
flag34=0
year_count=0
@csrf_exempt
def getnextmonth(request):
global flag34
global counter
if request.POST.has_key('client_response'):
if(flag34==0):
counter=0
flag34=1
# calendar with events
month1 = request.POST['client_response']
counter=counter+1
print "c",counter
print "\n getnextmonth:::: new m-=========",month1
sys_date_time = strftime("%Y-%m-%d %a %H:%M:%S ")
print sys_date_time
string1=str(sys_date_time)
str2=string1[8:10]
print "str2",str2
date=int(str2)
print "date",date
day=string1[11:13]
## day=int(day)
print "day",day
month=string1[5:7]
year=string1[0:4]
year=int(year)
print "year",year
month=int(month)
list_months=["January","February","March","April","May","June","July","August","September","October","November","December"]
month2=month+counter
print "month",month2
print month+year
if(month2==12):
counter=0
flag34=0
cal = calendar.monthcalendar(year, month2)
else:
cal = calendar.monthcalendar(year, month2)
print "next mon====",cal
x = request.POST['client_response']
print "======================================================================="
print "value xxxxxx==",x
print "======================================================================="
response_dict = {}
response_dict.update({'server_response': date })
response_dict.update({'server_response1': day })
response_dict.update({'server_response2': year })
response_dict.update({'server_response3': month2 })
response_dict.update({'server_response4': list_months })
response_dict.update({'server_response5': cal })
print "\njson list"
return HttpResponse(json.dumps(response_dict), content_type='application/json')
else:
return render_to_response('Search.html', context_instance=RequestContext(request))
请提出建议。我只是想知道我们是否正在动态地创建UI并将值分配给UI中的某个值,以及在views.py中发回该值的更好方法是什么,并进行一些计算并发送一些新值进行更新。
注意 ::: OHH!我只是试图通过使用全局变量来增加月份,但这不是永久性代码!我知道我可能错了!我是这个新手!请指正! 请帮忙 !我在UI技术方面并不是更好!
提前致谢! -Snehali