Ausgabe
Ich stoße mit diesem Fehler an eine Wand. Ich bin mir sicher, dass ich etwas grundlegendes übersehe, ich kann es nur nicht herausfinden …
ValueError at /sing/register
The view sing.singer.views.grade didn't return an HttpResponse object.
die Ansichtsdatei …
from django.shortcuts import render_to_response
from django import forms
from django.http import HttpResponseRedirect
from django.template import Template, RequestContext
from dash.forms import GradeForm
def register(request):
if request.method == 'POST':
form = GradeForm(data=request.POST)
if form.is_valid():
new_dash_profile = form.save()
new_user = form.save()
return HttpResponseRedirect("/success/")
else:
form = RegisterForm()
return render_to_response('grade.html',{'form':form},context_instance=RequestContext(request) )
meine urls.py
urlpatterns = patterns('dashboard.dash.views',
(r'^sing/register','register' ),)
meine settings.py
TEMPLATE_DIRS = (
"/home/django/testing/sing/grade/templates",)
Lösung
def register(request):
if request.method == 'POST':
form = GradeForm(data=request.POST)
if form.is_valid():
new_dash_profile = form.save()
new_user = form.save()
return HttpResponseRedirect("/success/")
else:
form = RegisterForm()
return render_to_response('grade.html',{'form':form},context_instance=RequestContext(request) )
Ihre Einkerbungen sehen aus?
Anfangs betrittst du die Ansicht mit request != ‘POST’, was niemals die Else-Anweisung unten erreicht, sodass du keine HttpResponse erhältst.
Das andere, was seltsam aussieht, ist, dass Sie, selbst wenn Sie Ihre Einzüge korrigieren, zunächst das RegisterForm zeigen und nach der Post-Anforderung die Daten aus Ihrem RegisterForm in ein GradeForm einfügen. Wenn dies nicht validiert, zeigen Sie, dass Sie Ihr GradeForm an Sie weitergeben Schablone. Ist das so beabsichtigt?
auch in Ihrer urls.py würde ich hinzufügen /
:
(r'^sing/register','register' ),)
wie:
(r'^sing/register/','register' ),)
es sei denn, Sie möchten, dass es übereinstimmt (zum Beispiel):
www.site.com/sing/registerasdf/
Ich könnte sogar vorschlagen, ‘/$’ am Ende so zu verwenden:
(r'^sing/register/$','register' ),)
um Übereinstimmungen zu verhindern (zum Beispiel):
www.site.com/sing/register/asdf/asdf/asdf/
www.site.com/sing/register/asdf/asdf/
www.site.com/sing/register/asdf/
Beantwortet von – dting
Antwort geprüft von – Mary Flores (FixError Volunteer)