Tengo un form
que se necesita en todas las funciones de vista de mi proyecto django .
Tengo una common template
para imprimir el formulario, pero para esto tengo que pasar el formulario desde todas mis funciones de vista.
Tengo alrededor de 8 aplicaciones . Para incluir el formulario en todas mis funciones de vista. Además, el formulario puede estar encuadernado o en blanco según el valor de la sesión.
Si escribo las líneas para incluir el formulario, tengo que escribir 5 líneas. Así que tengo que escribir esas 5 líneas en todas mis funciones de vista. ¿Alguna manera de hacer esto de una mejor manera?
forms.py
class LanguageSelectForm(forms.Form): language = forms.ModelChoiceField(empty_label='--Select A Language--', queryset=Language.objects.all(), widget=forms.Select(attrs={'class': 'form-control'}))
en views.py
form = LanguageSelectForm if 'language_id' in request.session: form_data = dict() form_data['language'] = request.session['language_id'] form = LanguageSelectForm(form_data)
estas son las 5 líneas que tuve que poner en todas mis funciones de vista.
Como @Mubariz Feyziyev
, puede usar context processors
para representar su formulario en cada plantilla. Esta es una forma de hacerlo. Además,
Si está de acuerdo con not
usar formularios Django:
action
en una URL particular como /api/handle-my-nice-form
,url
( /api/handle-my-nice-form/
) Si es nuevo en Django
, debe usar formularios integrados. Pero a medida que su aplicación crezca y se complique o si decidió usar una biblioteca como React
o Angular
; podría ser mejor construir an api based system
para manejar este tipo de cosas.
Si desea utilizar este formulario en las plantillas de django (todas), debe escribir procesadores de contexto: lea estos enlaces:
https://docs.djangoproject.com/en/1.10/_modules/django/template/context_processors/
https://docs.djangoproject.com/en/1.10/ref/templates/api/#write-your-own-context-processors