gpt4 book ai didi

python - 如果从不同的 View 函数调用,则不会传递上下文数据

转载 作者:行者123 更新时间:2023-12-02 04:23:43 25 4
gpt4 key购买 nike

我有这个功能,

def event (request):
all_events = Quiz.objects.filter(owner_id=request.user.pk, status="Assigned")
get_event_types = Quiz.objects.filter(owner_id=request.user.pk, status="Assigned")
context = {"events": all_events, "get_event_types": get_event_types, }
print("context is", context)
return render(request, 'classroom/teachers/calendar.html', context)

如果我将模板作为“calendar.html”传递,它运行良好。它应该绘制一个日历,并传递称为事件的上下文,然后由 JavaScript 函数处理以使用一些数据值填充日期。

这是我正确的工作 calendar.html:

{% extends 'base.html' %}
{% load fullcalendar_tags %}

{% block content %}

{% for i in events %}
{{ i }}
{% endfor %}


{% calendar %}
<script>

$(document).ready(function () {

var currentView = '',
d = new Date(),
today = d.getDay(),
dow = 1;
$('#calendar').fullCalendar({
header: {
left: 'prev,next',
center: 'title',
right: 'month,agendaWeek'
},
defaultDate: d,
events: [
{% for i in events %}
{
title: "{{ i.weight}} Kg",
start: '{{ i.scheduled_date|date:"Y-m-d" }}',
end: '{{ i.scheduled_date|date:"Y-m-d" }}',

},
{% endfor %}],
navLinks: true,
firstDay: 1, //Monday
viewRender: function (view) {
if (view && view.name !== currentView) {
if (view.name === 'agendaWeek') {
dow = today;
} else {
dow = 1;
}
setTimeout(function () {
$("#calendar").fullCalendar('option', 'firstDay', dow);
}, 10);
}
if (view) {
currentView = view.name;
}
}
});

});

</script>
{% endblock %}

这会很好地呈现上下文事件。但是,当我尝试将其传递给另一个 View 时,{% calendar %} 部分工作正常,但根本没有发送上下文。我已经打印了很多次,但无论出于何种原因,它都没有在“事件”上下文中传递任何内容。

我从另一个角度找到了一种调用事件函数的方法(不太确定是否是最好的方法,但执行起来似乎很简单)。

def json_example1 (request):
distinct_origin = Quiz.objects.filter(owner_id=request.user.pk).order_by().values_list('origin',
flat=True).distinct()
distinct_o_list = list(distinct_origin)
distinct_dest = Quiz.objects.filter(owner_id=request.user.pk).order_by().values_list('destination',
flat=True).distinct()
distinct_d_list = list(distinct_dest)
markers_list = list(set(distinct_o_list) | set(distinct_d_list))

# print("markers", markers_list)

gmaps = googlemaps.Client(key='AIzaSyArNLCXScd7tH0mwlDDPqXoVNgTT6emblI')
latitude = list()
longitude = list()
for i in markers_list:
geocode_result = gmaps.geocode(i)

lat = geocode_result[0]["geometry"]["location"]["lat"]
lon = geocode_result[0]["geometry"]["location"]["lng"]
longitude.append(lat)
latitude.append(lon)

# print("lat", latitude)
data = pd.DataFrame({'lat': latitude, 'lon': longitude, 'name': markers_list})
m = folium.Map(location=[21, 78], tiles="OpenStreetMap", zoom_start=4.75)
for i in range(0, len(data)):
folium.Marker([data.iloc[i]['lon'], data.iloc[i]['lat']], popup=data.iloc[i]['name']).add_to(m)

html_string = m._repr_html_()
context = {'map2': html_string}

# print("context is", context)

def load_calendar (request):
return event(request)

load_calendar(request) //Here I am loading the function

return render(request, 'classroom/teachers/graph_tot_trucks.html', context)

有什么线索吗??

最佳答案

我能够使用 iframe 完美地做到这一点。所有上下文数据也都可以正常传递。奇怪,我从来没有在 SO 或 Google 上找到任何关于此的线索。

关于python - 如果从不同的 View 函数调用,则不会传递上下文数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56932957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com