如何根据当前页面上的信息重新运行视图

时间:2017-02-22 09:12:03

标签: python json ajax django

我使用django Web框架创建日历网页。我在页面上有几个按钮a' Next'和'以前'我希望在视图上更改某些内容的值的按钮。

值的变化取决于页面上当前的内容,因此我使用ajax从页面获取一些信息并将其发送到视图。以下是观点:

def holiday(request):
    if request.is_ajax():     
        # find out if next or previous has been clicked
        request_type = request.GET['type']            
        if request_type == "next":  
            response_data = {}  

            # calculate new month and year based off current month and year from view 

            year = a_new_year
            month = a_new_month

        if request_type == "previous":

            #same again

    else:
        # page loaded for first time use current date
        date_today = datetime.now()
        year = date_today.year
        month = date_today.month

    my_holidays = Holiday.objects.order_by('start_date').filter(
        Q(start_date__year=year, start_date__month=month) | Q(end_date__year=year, end_date__month=month)
    )
    cal = HolidayCalendar(my_holidays, request.user).formatmonth(year, month)

    context = {
        "calendar": mark_safe(cal),
    }

    return render(request, "tande/calendar.html", context)

然后我有这个ajax

$('#next').click(function() {
    $.ajax({
        url: "{% url 'tande:holiday' %}",
        method: 'GET',
        data: {
            current: $('th.month').html(), 
            type: "next"
        },
        success : function (json) {
            console.log("hello");          
        }
    });
});

基本上,这不起作用,因为这里的响应只是页面的html。

如何运行视图 1)来自模板的信息 - 它是表头的内容 2)我按下了什么按钮的信息 - 我需要按钮的ID

并让它渲染?

1 个答案:

答案 0 :(得分:-1)

您无法仅使用Django动态更改HTML中的内容。您需要使用JavaScript。您可以使用django-serializer来管理数据,然后对前端进行后期处理。

  1. 使用前端语言(Javascript)重建页面;
  2. OR

    1. 重新加载页面(F5)。