Как передать переменные из одного представления в другое и выполнить рендеринг с URL-адресом последнего представления в Django?
Я строю систему управления студентами, используя Django.
В этом коде пользователь ищет ученика с зашифрованным запросомname=StudentName&grade=Grade&id=StudentID&phone=ParentPhoneNumber&report=StudentReportNumber
, который извлекается сdecrypt()
метод.
Вот два метода, один из которых обрабатывает запрос, а другой показывает профиль студента.
Данные из запроса не сохраняются в базе данных, но будут использоваться для запроса сведений об ученике из базы данных.
def process_query(request):
# process the query from the url /?details={{ some hashes here }}
if request.method == 'GET':
raw_deatils = request.GET.get('details', None)
if raw_deatils:
details = decrypt(raw_deatils)
# decrypt is a function that is defined
# in the utils which takes the input string,
# check predeifined tests to test if valid.
# and return the decrypted query string else None
if details:
# now the decrypted message looks something like this.
# name=StudentName&grade=Grade&id=StudentID&phone=
# ParentPhoneNumber&report=StudentReportNumber
# some more processing pulls out value to variables,
name = details['StudentName'],
grade = details['Grade'],
student_id = details['StudentID'],
phone = details['ParentPhoneNumber'],
report = details['StudentReportNumber'],
search_token = details['token']
return redirect("somewhere I'm stuck")
else:
# encryption error, so redirect user to query page
else:
# error with submission redirect to query page
else:
# error with method. redirect to homepage.
def student_profile(request, name=None, grade=None, student_id=None):
# token to be added??
# some data processing to get marks,
# progress report. etc
if student_id:
context = {
'name' : name,
'grade' : grade,
'student_id' : student_id,
'report' : report,
'marks': {
# another dictionary of dictionaries
# as the product of the processing
},
'token' : token,
'attendance': {
# another dicitonary of stuff.
}
else:
context = {
'name' : name,
'grade' : grade,
}
return render(request, 'students/profile/single.html', context)
URL для этого,
url(r'^go/всякий раз, когдаprofile_view
вызывается без 'process_view', только имя и оценка должны быть показаны. Еслиprofile_view
инициируетсяprocess_view
контекст с посещаемостью и оценками должен быть представлен.
Это работает доprocess_view
перенаправить, но у меня нет понятия, куда мне перенаправить (или даже перенаправить?застрял) и зоветprofile_view
.
Итак, краткое изложение вопроса,
Как мне перенаправить сprocess_view
вprofile_view
без потери данных, собранных вprocess_view
кprofile_view
и визуализировать контент с помощью URLprofile_view
? Я не хочуtoken
а такжеstudent_id
быть показано на URL.
Спасибо за любые предложения / помощь.
, 'students.views.process_query' name='process_view'),
url(r'^profile/(?P<name>[a-zA-Z]{1,20})/(?P<grade>[a-zA-Z]{1,20})всякий раз, когдаprofile_view
вызывается без 'process_view', только имя и оценка должны быть показаны. Еслиprofile_view
инициируетсяprocess_view
контекст с посещаемостью и оценками должен быть представлен.
Это работает доprocess_view
перенаправить, но у меня нет понятия, куда мне перенаправить (или даже перенаправить?застрял) и зоветprofile_view
.
Итак, краткое изложение вопроса,
Как мне перенаправить сprocess_view
вprofile_view
без потери данных, собранных вprocess_view
кprofile_view
и визуализировать контент с помощью URLprofile_view
? Я не хочуtoken
а такжеstudent_id
быть показано на URL.
Спасибо за любые предложения / помощь.
,
'students.views.student_profile', name='profile_view'),
всякий раз, когдаprofile_view
вызывается без 'process_view', только имя и оценка должны быть показаны. Еслиprofile_view
инициируетсяprocess_view
контекст с посещаемостью и оценками должен быть представлен.
Это работает доprocess_view
перенаправить, но у меня нет понятия, куда мне перенаправить (или даже перенаправить?застрял) и зоветprofile_view
.
Итак, краткое изложение вопроса,
Как мне перенаправить сprocess_view
вprofile_view
без потери данных, собранных вprocess_view
кprofile_view
и визуализировать контент с помощью URLprofile_view
? Я не хочуtoken
а такжеstudent_id
быть показано на URL.
Спасибо за любые предложения / помощь.