调用函数时未正确触发

问题描述 投票:0回答:1

我正在使用 request.session 将值从 django 中的一个页面传递到另一个页面,但显然当您触发后一个函数时,它不会更新变量。

views.py

first function`
def form_CDC(request):
    global FIC
    
    
    if request.method == 'GET':
           cdc_name = request.GET.get('data')
           
           
    
    if request.method == 'POST':
            form = classForm(request.POST) 

            if form.is_valid():
                FIC=form.cleaned_data["FIC"]
                request.session['Tuts']=form.cleaned_data["Tutorials"]
                request.session['Lec']=form.cleaned_data["Lectures"]
                request.session['Lab']=form.cleaned_data["Labs"]
                
                
               
                return HttpResponseRedirect("form_Faculty")
                
            else:
                form = classForm() 
                return HttpResponseRedirect('form_CDC') 
            
    else:
         form = classForm() 
    

    return render(request, "homepage/form_CDC.html", context={'form': form,"cdc_name":cdc_name})


second function
def form_faculty(request):
    submitted=False
    #these lines of code are not triggered when page is loaded
    Tutorial_number=request.session["Tuts"] 
    Lab_number=request.session["Lab"]
    Lecture_Number=request.session["Lec"]
   
    Lab_Faculty=[]
    Tut_Faculty=[]
    Lec_Faculty=[]
    
    Lectureformset=formset_factory(facultyform1,extra=Lecture_Number)
    Tutformset=formset_factory(facultyform2,extra=Tutorial_number)
    Labformset=formset_factory(facultyform3,extra=Lab_number)
    
    if request.method=="POST":
        form_lec=Lectureformset(request.POST or None)
        form_tut=Tutformset(request.POST or None)
        form_lab=Labformset(request.POST or None)
       
        if all([form_lec.is_valid(),form_tut.is_valid(),form_lab.is_valid()]): 
            for form1 in form_lec.forms:
                Lec_Faculty.append(form1.cleaned_data['Faculty'])
               
            for form2 in form_tut.forms:
                Tut_Faculty.append(form2.cleaned_data['Faculty'])
               
            for form3 in form_lab.forms:
                Lab_Faculty.append(form3.cleaned_data['Faculty'])   
                
            create_file(FIC_name=FIC,cdc=cdc_name,Lecture=Lecture_Number,Tutorial=Tutorial_number,Lab=Lab_number,Faculty_Lab=Lab_Faculty,Faculty_Lec=Lec_Faculty,Faculty_Tut=Tut_Faculty)
            return  HttpResponseRedirect('choose_new_table?submitted=True')
    
    return render(request, 'homepage/facultyForm.html', {'Lectureformset': Lectureformset,'Tutformset':Tutformset,'Labformset':Labformset,"submitted":submitted})

url.py

urlpatterns = [
   path('form_CDC',views.form_CDC,name='form_CDC'),
   path('form_Faculty',views.form_faculty,name='form_Faculty'),
]

`

我觉得这是一个愚蠢的意图错误,因为它之前工作得很好,但现在尝试了所有可能的结果,我能想到的都没有了。希望有人可以帮助我。

django django-models django-views django-forms django-templates
1个回答
0
投票

方法为“post”的请求不能重定向为 post 请求。

您应该发送新请求或直接调用该函数:

def form_CDC(request):
    ...
    
    if request.method == 'POST':

        ...

        return form_Faculty(request)
    ...

顺便使用GCBV Django。

© www.soinside.com 2019 - 2024. All rights reserved.