¿Puedo tener un formulario Django sin Modelo

¿Puedo tener un formulario en mi plantilla que no esté respaldado por un modelo? No necesito almacenar los datos, solo necesito esos datos para generar una solicitud POST propia en la vista.

Plantilla – El formulario con campos de texto. Ver: obtenga datos de un formulario y genere otra solicitud.

Flujo -> El envío del formulario lleva a una url que llama a la vista ”

def form_handle(request): if request.method=='POST' form = request.POST #blah blah encode parameters for a url blah blah #and make another post request 

pero esto coloca solo el token csrf en la variable de formulario. ¿Hay alguna forma de acceder a los campos de texto de la plantilla en mi vista form_handle?

¡Sé cómo hacerlo con un modelo pero no pude resolver esto!

Sí. Esto es muy posible. Puedes leer sobre los objetos del formulario . Sería de la misma manera que trataría un ModelForm , excepto que no está vinculado por el modelo, y tiene que declarar explícitamente todos los atributos de formulario.

 def form_handle(request): form = MyForm() if request.method=='POST': form = MyForm(request.POST) if form.is_valid(): cd = form.cleaned_data #now in the object cd, you have the form as a dictionary. a = cd.get('a') #blah blah encode parameters for a url blah blah #and make another post request #edit : added ": " after if request.method=='POST' 

y

 class MyForm(forms.Form): #Note that it is not inheriting from forms.ModelForm a = forms.CharField(max_length=20) #All my attributes here 

En la plantilla:

 
{% csrf_token %} {{form.as_p}}