[FIXED] Fehler beim Anzeigen des Django-Werts

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like