Python django.如何在name_znat字段中使用下拉元素输入用户选择的文本



有一个带有下拉元素的html表单:

<form method = "POST" action = "{% url 'create_group_handler'%}">
<select name = "select"> <! - Add an identifier here instead of using 'name' ->
<option value = "value1"> Value 1 </ option>
<option value = "value2" selected> Value 2 </ option>
<option value = "value3"> Value 3 </ option>
</ select>
</ form>

还有一个Python django模型:

Znat Class (models.Model):
name_znat = models.CharField ('Name znat', max_length = 200)

假设用户选择了一个文本为"Value 2"的下拉元素。如何在name_znat字段中输入用户使用下拉元素选择的文本?

您可以使用request.POST.get获得选择框值,所有提交的数据都在其中。

views.py

def myview(request):
if request.method == "POST":
selected_option = request.POST.get('select')
Znat.objects.create(name_znat=selected_option)
return redirect("/")

此外,无论何时使用表单,都应该有{% csrf_token %}。除非您的视图已明确标记为csrf_exempt。您可以在这里阅读CSRF代币的重要性。

<form method = "POST" action = "{% url 'create_group_handler'%}">
{% csrf_token %}
<select name = "select"> <! - Add an identifier here instead of using 'name' ->
<option value = "value1"> Value 1 </ option>
<option value = "value2" selected> Value 2 </ option>
<option value = "value3"> Value 3 </ option>
</ select>
</ form>

使用ModelForm,请参阅https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-editing/#model-表格。最大限度地利用Django的内置功能。祝你好运

models.py:

class Znat (models.Model):
CHOICES = (
('value1', 'Value 1'),
('value2', 'Value 2'),
('value3', 'Value 3'),
)
name_znat = models.CharField ('Name znat', max_length = 200, choices=CHOICES)

forms.py:

class CreateZnatForm(ModelForm):
class Meta:
model = Znat
fields = ('name_znat')
widgets = {
'name_znat': forms.Select(attrs={'class': 'form-control'}),
}

views.py:

class ZnatCreate(CreateView):
model = Znat
fields = ['name_znat']

urls.py:

urlpatterns = [
path('znat/', ZnatCreate.as_view(), name='create_group_handler'),
]

相关内容

最新更新