2017-01-27 2 views
0

J'ai traversé le Django forms 'tutorial'. Une fois que j'ai lu le tutoriel, j'ai essayé de le modifier en fonction de mes besoins et de le personnaliser pour l'apprendre. Django se forme bien. J'ai découvert chaque fois que j'ai modifié le formulaire, le site ne serait pas mis à jour. Je suppose que c'est une erreur avec mon code, mais je n'ai pas réussi à le trouver.Django form.py ne pas mettre à jour

# views.py 
def contact(request): 
    # if this is a POST request we need to process the form data 
    if request.method == 'POST': 
     # create a form instance and populate it with data from the request: 
     form = ContactForm(request.POST) 
     # check whether it's valid: 
     if form.is_valid(): 
      # process the data in form.cleaned_data as required 
      # ... 
      # redirect to a new URL: 
      return HttpResponseRedirect('/message_recived/') 

# forms.py 
from django import forms 
class ContactForm(forms.Form): 
    name = forms.CharField(label='Name', max_length=100) 
    email = forms.EmailField(label='Email', max_length=100) 
    message = forms.CharField(label='Message', max_length=500) 


# models.py 
from django.db import models 
class Contact(models.Model): 
    name = models.CharField(max_length=100) 
    email = models.CharField(max_length=100) 
    message = models.CharField(max_length=500) 

et voici le modèle contact.html:

#contact.html 
{% extends "BlogHome/headerAndFooter.html" %} 
{% block content %} 
<script> 
document.title = "Pike Dzurny - Contact" 
</script> 
<form action="/message_recived/" method="post"> 
    {% csrf_token %} 
    {{ form }} 
    <input type="submit" value="Submit" /> 
</form> 
{% endblock %} 

Est-ce que je fais quelque chose de mal? J'ai essayé d'effacer le cache de mon navigateur, en utilisant un nouveau navigateur, et évidemment en le rafraîchissant.

Répondre

1

On dirait que vous oubliez de répondre render à l'intérieur de votre vue. Vous devez également inclure la forme dans le contexte pour rendre le modèle correct.

Essayez de changer de vue comme suit:

def contact(request): 
    # if this is a POST request we need to process the form data 
    if request.method == 'POST': 
     # create a form instance and populate it with data from the request: 
     form = ContactForm(request.POST) 
     # check whether it's valid: 
     if form.is_valid(): 
      # process the data in form.cleaned_data as required 
      # ... 
      # redirect to a new URL: 
      return HttpResponseRedirect('/message_recived/') 
    else: 
     form = ContactForm()  
    return render(request, 'contact.html', {'form': form}) 
+0

encore rien): –

+1

@PikeD. hm, pouvez-vous vérifier lorsque vous ouvrez la page dans le navigateur si c'est le bon modèle ou non? Pouvez-vous voir le formulaire sur la page? – neverwalkaloner

+0

Ok, je viens de regarder dans mes templates, et il semble qu'il y ait une copie de mes templates sauf que l'un est 'contact.html' et l'autre' Contact.html', on dirait que je suis en train d'éditer 'Contact.html' . J'ai alors copié et collé le HTML dans 'contact.html' et il semble que ce soit encore maintenant, il ne rend pas le formulaire du tout. –