2017-10-08 2 views
0

Ich arbeite an einem Projekt und endete mit einigen Problemen. Also mein Formular zeigt sich überhaupt nicht in meiner Vorlage. Aber ich habe ein anderes Formular erstellt und es funktioniert wie es sollte!Django Formular erscheint nicht

Also mein 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

Sie haben einen Typ mit Ihrer Kontextvariablen. – fledgling

Antwort

3

Das Problem ist in Ihrer Vorlage, können Sie Ihre Kontextvariable als form_p fordern, während sie als "Form" vorbei:

Index. html

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

Danke! Aber jetzt zeigt es eine andere Form, die ich zuvor erstellt habe. Was soll ich machen? –

+0

@AnnieShlepak Ich glaube, dass passiert, weil 'context.update (csrf (request))' nach der Erstellung Ihres Kontexts aufgerufen wird * dict *, nicht sicher, gerade jetzt –

0

Haben importiert Sie das Formular in die views.py? Ort dies in Ihrem views.py

from .forms import ProjectForm 
+0

Ja, habe ich. Aber danke trotzdem :) –

Verwandte Themen