2017-10-08 254 views
0

我正在處理某個項目,並且遇到了一些問題。 所以我的表單在我的模板中完全不顯示。 但我之前創建了另一個表單,它的工作原理應該如此!Django窗體不顯示

所以我的代碼:

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

您已經鍵入了您的上下文變量。 – fledgling

回答

3

的問題是你的模板中,您所呼叫的上下文變量爲form_p,而把它當作「形式」

指數。 html

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

謝謝!但現在它顯示了我之前創建的另一種形式。我該怎麼辦? –

+0

@AnnieShlepak我相信這是由於context.update(csrf(request))'在創建你的上下文* dict *後調用的,現在還不確定 –

0

你有進口的形式在views.py? 這個地方在您views.py

from .forms import ProjectForm 
+0

是的,我做到了。不過謝謝你:) –