2016-11-20 7 views
1

Ich verstehe nicht, wo mein Problem liegt. Ich bekomme ein Problem mit den URLs, aber ich sehe nicht, wo ich einen Fehler gemacht habe.Seite nicht gefunden 404 mit Django

Ich habe ein Projekt: Etat_civil

Ich habe eine App: BirthCertificate

Mein views.py app ist:

from django.shortcuts import render 
from django.http import HttpResponse 
from django.template import loader 
from BirthCertificate.forms import BirthCertificateForm 

# Create your views here. 

def BirthCertificateAccueil(request) : 
    # Fonction permettant de créer la page d'accueil de la rubrique Acte de Naissance 

    #Cherche le fichier html accueil et le renvois 
    template = loader.get_template('accueil.html') 
    return HttpResponse(template.render(request)) 


def BirthCertificateCreationAccueil(request) : 
    # Fonction permettant de créer la page de création du formulaire de la partie : Acte de Naissance 

    template = loader.get_template('creation_accueil.html') 
    return HttpResponse(template.render(request)) 

def BirthCertificateForm(request) : 
    if request.method == 'POST' : 
     form = BirthCertificateForm(request.POST) 

     if form.is_valid(): 
      numero_acte = form.cleaned_data["Numero de l'acte"] 
      nom = form.cleaned_data['Nom'] 
      prenom = form.cleaned_data['Prenom'] 

    else : 
     form = BirthCertificateForm() 

    template = loader.get_template('birthform.html') 

    return render(request, template.render(request),locals()) 

Ich habe auch eine urls.py app:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^accueil$', views.BirthCertificateAccueil), 
    url(r'^creation$', views.BirthCertificateCreationAccueil), 
    url(r'^formulaire$', views.BirthCertificateForm), 
] 

Und mein.210 wie folgt aussieht:

from django.conf.urls import url, include 
from django.contrib import admin 

from BirthCertificate import views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^BirthCertificate/', include('BirthCertificate.urls')), 
] 

Die birthform.html Datei wie folgt aussieht:

{% if envoi %} Votre formulaire est bien complété ! {% endif %} 

<form action="{% url "BirthCertificate.views.BirthCertificateForm" %}" method="post">{% 
csrf_token %} 
{{ form.as_table }} 
<input type ="submit" value="Valider" /> 
</form> 

Wenn ich starten: http://localhost:8000/BirthCertificate/formulaire

ich diesen Fehler:

Seite nicht gefunden (404) Anfrage Methode: GET Anfrage

URL: http://localhost:8000/BirthCertificate/formulaire Mit dem URLconf in Etat_civil.urls definiert, versucht Django diese URL-Muster, in dieser Reihenfolge:

^admin/

^Birthcertificate/^ accueil $

^Birthcertificate/^ creation $

Die aktuelle URL, BirthCertificate/formulaire, stimmte nicht mit überein. Sie sehen diesen Fehler, weil Sie in Ihrer Django-Einstellungsdatei DEBUG = True haben. Ändern Sie das in False und Django zeigt eine Standard-404-Seite an.

Ich bin fest mit Django und ich würde gerne wissen, ob Sie den Fehler sehen?

Vielen Dank!

#

EDIT:

hatte ich einen Fehler in meiner forms.py: Ich max_lenght statt max_length schrieb. Aber ich bekomme immer einen Fehler:

TypeError at /BirthCertificate/formulaire 
BirthCertificateForm() missing 1 required positional argument: 'request' 
Request Method: GET 
Request URL: http://localhost:8000/BirthCertificate/formulaire 
Django Version: 1.10.3 
Exception Type: TypeError 
Exception Value:  
BirthCertificateForm() missing 1 required positional argument: 'request' 
Exception Location: /Users/valentinjungbluth/Desktop/Django/Etat_civil/BirthCertificate/views.py in BirthCertificateForm, line 34 
Python Executable: /Library/Frameworks/Python.framework/Versions/3.5/bin/python3 
Python Version: 3.5.2 
Python Path:  
['/Users/valentinjungbluth/Desktop/Django/Etat_civil', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages'] 
Server time: Sun, 20 Nov 2016 16:16:16 +0000 
+0

Haben Sie den Server neu gestartet? –

+0

@DanielRoseman Ja, ich habe den Port beendet, mache wieder einen Runserver und immer diesen Fehler. Jedoch,/accueil und/creation woks gut, also verstehe ich nicht. – Deadpool

+0

versuchen Sie, Ihre Ansicht 'BirthCertificateForm' in' BirthCertificateView' umzubenennen, nicht sicher, aber möglicherweise gibt es einige Namen Konflikt – devxplorer

Antwort

2

Funktion machen() nimmt template_name als Argument. Versuchen Rückkehr in Birth CertificateForm(), um dies zu ändern:

return render(request, 'birthform.html', locals()) 

EDIT:

Wahrscheinlich Sie Problem in dieser Codezeile haben:

form = BirthCertificateForm() 

Ich schlage vor, Sie yo Ansicht wechseln und folgendes Muster zu verwenden:

form = BirthCertificateForm(request.POST or None) 
if form.is_valid(): 
    numero_acte = form.cleaned_data["Numero de l'acte"] 
    nom = form.cleaned_data['Nom'] 
    prenom = form.cleaned_data['Prenom'] 

und jetzt brauchen Sie dieses if-els nicht e-Validierung:

if request.method == 'POST' : 
    pass 
else: 
    pass 
+0

Ich verstehe nicht, immer die gleiche Sache, Fehler 404 – Deadpool

+0

@ Andromedae93 diese Zeile 'Rendern Rendern (Anfrage, template.render (Anfrage), Locals())' Fehler enthält, versuchen Sie es zu ändern 'Rendern Rendern (Anfrage , 'birthform.html', Einheimische()). Hoffe, das wird helfen. – neverwalkaloner

+0

Was ich gemacht habe;) Aber der Fehler 404 ist immer noch da. Ich habe die birthform.html hinzugefügt, vielleicht kommt der Fehler von dieser Datei? – Deadpool