You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中从HTML表单获取下拉选择框的文本内容?

Got it, let’s get your template selection form working smoothly in Django. Here’s how to tie your existing code to Django’s best practices and make everything functional:

1. Complete Your Form Class

First, let’s finish that TemplateSelectionForm you started. Using Django’s built-in form classes adds server-side validation and makes maintenance easier:

from django import forms

class TemplateSelectionForm(forms.Form):
    # Define your template choices with machine-readable values and human-friendly labels
    TEMPLATE_CHOICES = [
        ('vital_signs', 'Vital Signs'),
        ('cancer_signs', 'Cancer Signs'),
    ]
    
    template = forms.ChoiceField(
        choices=TEMPLATE_CHOICES,
        # Add any custom attributes for styling if needed
        widget=forms.Select(attrs={'class': 'template-select'}),
        label='EHR Template Type',
        help_text='Pick the template you want to use for creating a new EHR entry'
    )
2. Update Your ehrinfo.html Template

You can either let Django render the form automatically (cleaner) or keep your manual HTML structure while binding it to the form (more control). Here are both options:

Option 1: Auto-rendered Form (Quick & Clean)

<form action="{% url 'ehrs:compcreate' %}" method="GET">
    {{ form.as_p }}
    <br>
    <input type="submit" value="Select Template" class="addehr">
</form>

Option 2: Manual HTML with Form Binding (Full Control)

If you want to keep your original select structure:

<form action="{% url 'ehrs:compcreate' %}" method="GET">
    <select name="{{ form.template.name }}">
        {% for value, label in form.template.field.choices %}
            <option value="{{ value }}" {% if value == form.template.value %}selected{% endif %}>
                {{ label }}
            </option>
        {% endfor %}
    </select>
    <br><br>
    <input type="submit" value="Select Template" class="addehr">
</form>
3. Handle the Form in Your View

Now update the compcreate view to process the selected template:

from django.shortcuts import render
from .forms import TemplateSelectionForm

def compcreate(request):
    # Initialize the form with GET data if it exists
    form = TemplateSelectionForm(request.GET or None)
    
    if form.is_valid():
        # Get the cleaned, validated template value
        selected_template = form.cleaned_data['template']
        
        # Do something with the selected template (e.g., load pre-filled fields)
        # Example: Redirect to a page with the template-specific form
        # return redirect('ehrs:create_ehr', template_type=selected_template)
        
        # Or render a page with the selected template details
        return render(request, 'ehrs/template_preview.html', {
            'template': selected_template,
            'template_label': dict(form.TEMPLATE_CHOICES)[selected_template]
        })
    
    # If no GET data or form is invalid, render the selection page
    return render(request, 'ehrs/ehrinfo.html', {'form': form})
Quick Tips
  • URL Check: Make sure your ehrs:compcreate URL pattern is correctly defined in your app’s urls.py
  • Pre-select a Template: To set a default selected option, pass an initial value when creating the form:
    form = TemplateSelectionForm(initial={'template': 'vital_signs'})
    
  • Styling: Use the attrs parameter in the form’s widget to add custom CSS classes for styling your select box.

内容的提问来源于stack exchange,提问作者Dreaded Harvester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:40:58