2017-10-08 3 views
0

Je travaille sur un projet et j'ai fini par avoir quelques problèmes. Donc, mon formulaire ne s'affiche pas du tout dans mon modèle. Mais j'ai créé une autre forme avant et ça marche comme il se doit!Le formulaire Django n'apparaît pas

donc mon code:

models.py

class Project(models.Model): 
    class Meta: 
     db_table = "project" 

    COLORS = (
     ('R', 'Red'), 
     ('B', 'Blue'), 
     ('G', 'Green'), 
     ('Y', 'Yellow') 
    ) 
    project_title = models.CharField(max_length=200) 
    project_color = models.CharField(max_length=1, choices=COLORS) 

    def __str__(self): 
     return self.project_title 

forms.py

class ProjectForm(ModelForm): 
    class Meta: 
     model = Project 
     fields = ['project_title', 'project_color'] 

views.py

def addproject(request): 
    if request.POST: 
     form_p = ProjectForm(request.POST) 
     if form_p.is_valid(): 
      form_p.save(commit=False) 
      return HttpResponseRedirect('/') 
    else: 
     form_p = ProjectForm() 
    context = { 
     'projects': Project.objects.all(), 
     "form": form_p, 
     'username': auth.get_user(request).username, 
    } 
    context.update(csrf(request)) 
    return render(request, 'index.html', context) 

urls.py

urlpatterns = [ 
    url(r'^addproject/$', views.addproject, name='addproject'),] 

index.html

<form action="/addproject/" method="post"> 
    {% csrf_token %} 
    {{ form_p.as_table }} 
    <button type="submit" class="btn btn-primary">Add Project</button> 
</form> 
+0

Vous tapez avec votre variable de contexte. – fledgling

Répondre

3

Le problème est dans votre modèle, vous appelez votre variable de contexte que form_p en passant comme "forme":

index . html

<form action="/addproject/" method="post"> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <button type="submit" class="btn btn-primary">Add Project</button> 
</form> 
+0

Merci! Mais maintenant, il montre une autre forme que j'ai créée auparavant. Que devrais-je faire? –

+0

@AnnieShlepak Je crois que cela se produit en raison de 'context.update (csrf (request))' étant appelé après la création de votre contexte * dict *, je ne suis pas sûr maintenant –

0

Avez-vous importé le formulaire pour la views.py? lieu ce à votre views.py

from .forms import ProjectForm 
+0

Oui, je l'ai fait. Mais merci quand même :) –