2016-04-01 6 views
0

Hier ist mein Code, der meiner Meinung nach zu dieser Situation gehört. Es tut mir leid, ich bin neu in Django.Django 1.9.4 Erhalten Eingabedaten aus dem Formular, um in einer anderen Vorlage zu zeigen

views.py

from django.http import HttpResponseRedirect 
from django.shortcuts import render 

from .forms import SearchForm 

def result_one(request): 
     return render(request, "testresult.html", {}) 

def get_results(request): 
    if request.method == 'POST': 
     form = SearchForm(request.POST) 
     if form.is_valid(): 
      return HttpResponseRedirect('/result/') 
    else: 
     form = SearchForm() 
    return render(request, 'index.html', {'form': form}) 

urls.py

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

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^search/$', "search.views.get_results"), 
    url(r'^result/$', "search.views.result_one"), 
] 

forms.py

from django import forms 

class SearchForm(forms.Form): 
    client_group_number=forms.IntegerField(label='Group Number', widget=forms.TextInput(attrs={'placeholder': 'Group Number'})) 

Von meinem Verständnis, was ich glaube, geschehen sollte, ist, dass ein Eingang gesetzt wird, in eine HTML-Seite. Wenn der Benutzer auf Senden klickt, wird die Eingabe in forms.py als Daten gespeichert. Diese Daten werden in views.py manipuliert, was auf einer anderen HTML-Seite angezeigt wird. (Ich hoffe, das ist richtig)

Was ich möchte, ist eine Eingabe für client_group_number (in forms.py) von index.html (zum Beispiel: 123), die in view.py und Angezeigt in einer anderen HTML-Vorlage, die ich testresult.html genannt habe, die Group Number = 123 anzeigen würde (die 123 kommt entweder aus forms.py oder views.py).

Dies könnte eine sehr einfache Sache zu erreichen und ich entschuldige mich wenn es ist, aber ich kann nicht finden, was ich im Internet brauche.

Antwort

0

Django validiert die Formulareingabedaten im gereinigten_Datenwörterbuch. Sie müssten dies entweder als Argumente in der Umleitung oder in der Sitzung an die neue Vorlage übergeben. Hier ist ein einfaches Beispiel, um Ihnen eine Idee zu geben, es gibt wahrscheinlich bessere Möglichkeiten.

if form.is_valid(): 
    group_number = form.cleaned_data["client_group_number"] 
    HttpResponseRedirect("/result/?group_number=" + group_number) 
+0

Vielen Dank für die schnelle Antwort! Ich bekomme aber immer noch "Group Number =" in meiner anderen HTML-Seite. Fehle ich etwas? – johnreeves

+0

Sie müssen die Gruppennummer aus der Anforderung in result_one abrufen und sie dann an das Kontextargument in der Renderfunktion übergeben. Etwas wie group_number = request.GET.get ("group_number") – micebrain

Verwandte Themen