2017-07-13 4 views
2

J'ai des formes croustillantes qui fonctionnent avec mon modèle, bien que la forme semble plate et que le bootstrap n'apparaisse pas, aussi il semble n'y avoir aucun bouton. Même lorsque vous ajoutez un bouton et que vous cliquez dessus (il est actualisé), aucune donnée n'a été enregistrée dans la base de données. J'ai essayé plusieurs façons. Ce qui semble être faux? Toute aide serait très appréciée.Django Crispy formes ne montrant pas bootstrap/css ou bouton

forms.py

class PlotForm(forms.ModelForm): 
    helper = FormHelper() 
    helper.form_tag = False 
    helper.form_method = 'POST' 

    class Meta: 
     model = Plot 
     fields = '__all__' 

vues:

def plot_form(request): 
    return render(request, 'plot_form.html', {'form': PlotForm()}) 

le code html:

{% load crispy_forms_tags %} 
    <form action="" method="POST"> 
    {% crispy form %} 
     <input type="submit" class="btn btn-default" value="save"> 
+0

Est-ce que cela résout votre problème? – bhansa

+0

non, il n'a pas @Bhansa – Inconnu

Répondre

1

D'abord le {% csrf_token %} manque. Deuxième Si je me souviens bien, vous devez utiliser {{ form|crispy }} pour charger le formulaire.

Troisièmement, je recommande d'utiliser Widget Tweaks

<form method='POST' action="/" enctype='multipart/form-data'> 
{% load widget_tweaks %} 
{% csrf_token %} 
{{ form.first_name |add_class:"customCSS1 customCSS2" }} 
{{ form.second_name |add_class:"customCSS3 customCSS4" }} 
</form> 
{{ form.media.js }} 

avec ce plugin vous pouvez définir le style de la forme que vous souhaitez. Toutes les classes Css fonctionnent. Crispy est sympa, mais vous avez accès à la documentation et il existe toujours des solutions de contournement lorsque vous voulez styliser le formulaire. Avec Widget Tweaks, vous pouvez simplement appliquer n'importe quelle classe CSS. Lorsque vous connaissez vraiment votre chemin avec croustillant, vous pouvez faire beaucoup, mais pour arriver à ce point .... Je suis passé à un certain point et maintenant tout fonctionne comme un charme

Espérons que ça aide si ne pas laisser un commentaire:)

Modifier

Je viens de voir quelque chose dans votre views.py. Vous ne faites pas référence à la forme correcte pour autant que je sache.

from appName.forms import PlotForm 

def plot_form(request): 
    form = PlotForm(request.POST or None, request.FILES or None) #request files is only required when you want to upload a file 
    if form.is_valid(): 
    instance = form.save(commit = False) 
    ... 
    instance.save() 
    #messages.success(request, 'form was saved') #optional 
    context = { 
    'form':form, 
    } 
    return render(request, 'AppName/plot_form.html', context) 

Peut-être que cela fera l'affaire. Vous n'avez pas eu une validation de formulaire et je ne suis pas sûr si le "()" au {'form': PlotForm()} casserait le code.

+0

Pour autant que je me souvienne, la forme croustillante gère le jeton crsf donc nous n'avons pas besoin de l'utiliser. J'utilise le tag modèle non filtre croustillant. Merci pour l'information mais je cherchais un moyen d'utiliser uniquement des formes croustillantes pour y parvenir. :/ – Inconnu

+0

@Achilles ok Je viens d'éditer quelque chose, peut-être que cela aidera. De toute façon bonne chance j'espère que vous allez le faire fonctionner avec croustillant. – hansTheFranz