简体   繁体   English

Django 重定向到不同的 URL 基于 forms 选择

[英]Django Redirect to different URL base on forms choice

Hello I stack with redirect to different pages base on Form Choice in Django.您好,我根据 Django 中的表单选择将重定向到不同页面的堆栈。 I have 4 different choices to pick, but everyone has different next page.我有 4 种不同的选择可供选择,但每个人的下一页都有不同的选择。 I do something like this:我做这样的事情:

forms.py forms.py

class DodajForm(forms.ModelForm):
class Meta:
    model = Atrakcje
    exclude = ['user']
    fields = ['tytul', 'opis', 'kategoriaa', 'adres',
     'wojewodztwo', 'miasto', 'telefon', 'zdjecie', 'wideo',
     'email', 'strona', 'facebook', 'kodpocztowy', 'zaswiadczenia', 'pakiet', 'cena', 'dla']
    widgets = {
        'kategoriaa': forms.Select(
             attrs={
                'class': 'form-control'
            }
        ),
         'pakiet': forms.Select(
             attrs={
                'class': 'form-control'
            }
        ),
        'tytul': forms.TextInput(
             attrs={
                'class': 'form-label'
            }
        ),
        'opis': forms.Textarea(
             attrs={
                'class': 'form-control'
            }
        ),
          'zdjecie': forms.FileInput(
             attrs={
                'class': 'dropzone dz-clickable',

            }
        ),

       'zaswiadczenia': forms.FileInput(
             attrs={
                'class': 'dropzone dz-clickable',

            }
        ),

    }

views.py视图.py

def formularz(request):
form = DodajForm(request.POST)   
if form.is_valid():
    ogloszenie = form.save(commit=False)
    ogloszenie.user = request.user 
    ogloszenie.save()
    if form.pakiet == "free":

        return redirect('atrakcje:after') 
    elif form.pakiet == "pakiet1":
        return redirect('atrakcje:after1') 
    elif form.pakiet == "pakiet2":
        return redirect('atrakcje:after2') 
    else:
        return redirect('atrakcje:after3') 
else:
    ogloszenie = DodajForm()
context = {
            'form': form,}
return render(request, 'formularz.html', context)

and I have error on every choice like this:我对这样的每个选择都有错误:

"AttributeError at /atrakcje/formularz/ 'DodajForm' object has no attribute 'pakiet' “/atrakcje/formularz/'DodajForm' object 处的 AttributeError 没有属性 'pakiet'

There is a error on this line: if form.pakiet == "free":这一行有一个错误: if form.pakiet == "free":

Any recommendations how to resolve this please?请问有什么建议可以解决这个问题吗?

You need to call form.cleaned_data['pakiet']你需要调用form.cleaned_data['pakiet']

you need to first extract data for 'pakiet' field from form like this您需要首先从这样的表单中提取“pakiet”字段的数据

data = form.cleaned_data['pakiet']
if data  == "free":
    return redirect('atrakcje:after') 
elif data  == "pakiet1":
    return redirect('atrakcje:after1') 
elif data  == "pakiet2":
    return redirect('atrakcje:after2') 
else:
    return redirect('atrakcje:after3') 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM