Python 如何根据用户在下拉列表中的选择重定向用户?
我制作了一个表单,它有一个gander下拉列表,有两个选项,如果用户选择(1)并提交表单,我如何根据他的选项重定向用户,表单将重定向他到一个URL,如果他的选择(2)将重定向他到另一个URL。 我想在视图或表单中解决它,而不是在模板中 models.pyPython 如何根据用户在下拉列表中的选择重定向用户?,python,django,redirect,django-forms,django-views,Python,Django,Redirect,Django Forms,Django Views,我制作了一个表单,它有一个gander下拉列表,有两个选项,如果用户选择(1)并提交表单,我如何根据他的选项重定向用户,表单将重定向他到一个URL,如果他的选择(2)将重定向他到另一个URL。 我想在视图或表单中解决它,而不是在模板中 models.py class User(models.Model): first_name = models.CharField(max_length=100) second_name = models.CharField(max_length=
class User(models.Model):
first_name = models.CharField(max_length=100)
second_name = models.CharField(max_length=100)
E_mail = models.EmailField(max_length=254)
COUNTRY_CHOICES = [('saudi arabia +966','SAUDI ARABIA +966'),
('oman +968','OMAN +968'),
('kuwait +965','KWUAIT +965'),
('Qatar +948','QATAR +948')]
country = models.CharField(max_length=250, choices=COUNTRY_CHOICES, null=True)
phone = models.IntegerField(null=True)
phone_code = models.IntegerField(null=True)
birthday = models.IntegerField(null=True)
GANDER = [('1','Male'),
('2','Female')]
gander = models.CharField(max_length=250, choices=GANDER, null=True)
def __str__(self):
return self.first_name
forms.py
class UserForm(forms.ModelForm):
class Meta:
GANDER = (('1', 'male'), ('2', 'female'))
model = User
fields = ('first_name', 'second_name', 'E_mail', 'country', 'phone', 'phone_code','birthday', 'nationality',)
widgets = {
'first_name': forms.TextInput(attrs={'placeholder': 'الاسم الاول'}),
'second_name': forms.TextInput(attrs={'placeholder': 'الاسم الثاني'}),
'E_mail': forms.EmailInput(attrs={'placeholder': 'joe@schmoe.com'}),
'nationality': forms.Select(choices=GANDER,attrs={'class': 'form-control'}),
}
views.py
def form_page(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
print(form)
form.save()
if form.nationality == 1:
return redirect('LandingPage:thank_you')
else:
return redirect('LandingPage:thank_you_not')
else:
form = UserForm()
posts = Article.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'LandingPage/form_page.html', {'form': form, 'posts': posts,})
我的模板
<!-- Nationalety -->
<div class="ui field">
<label>الجنسية</label>
{{form.nationality}}
</div>
الجنسية
{{形式.国籍}
你做了所有困难的事情,你只需要使用表单.gander
(去掉gander上的帽子):
你做了所有困难的事情,你只需要使用
form.gander
(去掉gander上的大写字母):
真的很简单,谢谢:),但是当我运行这个代码(“UserForm”对象没有属性“gander”)时会出现错误消息。我更新了问题并添加了models.py。你需要把它放在小部件中,这样他就可以使用了。我已经更新了代码,但仍然无法工作。AttributeError at/'ChoiceField'对象没有属性'value\u from_datadict'真的很简单,谢谢:),但当我运行此代码时出现错误消息('UserForm'对象没有属性'gander'),我更新了问题并添加了models.py。你需要将其放在小部件中,以便他可以使用。我已经更新了代码,但仍然无法工作。/'ChoiceField'对象上的AttributeError没有属性'value\u from\u datadict'
if form.is_valid():
form.save()
if form.gander == 1:
return redirect('LandingPage:thank_you_one')
else:
return redirect('LandingPage:thank_you_two')