Ich verwende das django-Webframework, um eine Kalenderwebseite zu erstellen. Ich habe ein paar Knöpfe auf der Seite und eine Schaltfläche "Weiter" und "Zurück", dass ich die Werte einiger Dinge in einer Ansicht ändern möchte.So führen Sie eine Ansicht basierend auf Informationen auf der aktuellen Seite erneut aus
Die Änderung der Werte hängt davon ab, was sich gerade auf der Seite befindet. Daher habe ich Ajax verwendet, um Informationen von der Seite zu erhalten und sie an die Ansicht zu senden. Hier ist die Ansicht:
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)
Und dann habe ich diese Ajax
$('#next').click(function() {
$.ajax({
url: "{% url 'tande:holiday' %}",
method: 'GET',
data: {
current: $('th.month').html(),
type: "next"
},
success : function (json) {
console.log("hello");
}
});
});
Im Grunde ist dies nicht funktioniert, weil die Antwort hier nur die HTML für die Seite ist.
Wie kann ich die Ansicht mit 1) Informationen aus der Vorlage ausgeführt werden - es ist der Inhalt eines Tabellenkopf 2) Informationen darüber, welche Taste drückte ich - ich brauche die ID der Schaltfläche
und es bekommen rendern?
Ich verstehe nicht, was du meinst. Du * renderst * die Seite neu; aber Ihre Ajax-Erfolgsmethode tut nichts mit der zurückgegebenen Antwort, also geht es nirgendwohin. –
Ja - im Grunde weiß ich nicht, was ich jetzt tun soll. Ich habe es geschafft, Daten an die Ansicht zu senden - das Zeug, das ich brauche. Und führe die Aussicht. Ich nehme an, die Frage ist, was mache ich jetzt, um die Seite zu aktualisieren? @DanielRoseman –
Nun, wenn Sie möchten, dass die Seite vollständig aktualisiert wird, weiß ich nicht, warum Sie überhaupt Ajax verwenden; Mach einfach die Monate normale Links. Andernfalls muss Ihre Erfolgsfunktion das Ergebnis mit jQuery in den HTML-Code der vorhandenen Seite einfügen. –