2017-05-15 10 views
0

Ich möchte ein Formular bearbeiten, das ich mit HTML in Django erstellt habe, aber ich kann nicht den richtigen Weg finden, um den Wert von den Eingaben zu erhalten.Django - Handling-Formular ohne das Formular-Modell

Das ist mein HTML-Formular:

<form action="" class="form-inline" method="post"> 
{% csrf_token %} 
    <!-- malfunction description --> 
    <label class="requiredField" for="malfunctionDescription">תאור 
     התקלה</label> 
    <br/> 
    <textarea class="form-control" style="width: 100%; margin-bottom: 3px" 
       id="malfunctionDescription" 
       name="malfunctionDescription" 
       rows="5"> 
    </textarea> 
</form> 

Und das ist mein view.py der leider leer ist:

def index(request): 
error = '' 
if request.method == 'POST': 
    status = request.POST['status'] 
    rank = request.POST['rank'] 
    opener = request.POST['MalfunctionOpener'] 
    handler = request.POST['malfunctionHandler'] 
    system = request.POST['system'] 
    unit = request.POST['unit'] 
    opening_date = request.POST['openingdate'] 
    closing_date = request.POST['closingdate'] 
    description = request.POST['malfunctionDescription'] 
    solution = request.POST['malfunctionSolution'] 
    summary = request.POST['malfunctionSummary'] 

    find_description = Malfunction.objects.filter(description=description) 
    if find_description: 
     error = 'This malfunction is already stored in the data base' 
    else: 
     Malfunction.objects.create(status=status, rank=rank, opener=opener, handler=handler, system=system, 
            unit=unit, openingDate=opening_date, closingDate=closing_date, solution=solution, 
            summary=summary, description=description) 

else: 
    error = 'Something went wrong' 

return render(request, 'resources-management/home.html') 

Das Hauptziel für mich ist diese Information aus der Form zu erhalten und Erstellen Sie ein neues Objekt, das es in die Datenbank schieben wird. Wenn ich das richtig verstanden, dieses Objekt, das ich so etwas wie tun müssen, erstellen:

Object_name.object.create(information=information) 

Aber ich weiß nicht, wie die Informationen zu bekommen, ich so etwas wie request.form brauchen [ ‚name‘] in Kolben

Danke!

---- EDIT 1 - url.py ----

Dies ist der Haupt url.py

urlpatterns = [ 
url(r'^', include('elbit_ils.urls')), 
url(r'^admin/', admin.site.urls), 
url(r'^resources-management/', include('resources_management.urls')), 
url(r'^registration-login/', include('registration_login.urls')), 
url(r'^contact/', include('contact.urls')), 

]

Dies ist die Anwendung url.py

urlpatterns = [ url(r'^$', IndexView.as_view(), name="my_list"), url(r'^(?P<pk>\d+)$', DetailView.as_view(model=Malfunction, template_name="resources-management/malfunction.html")), ]

- bearbeiten 2: indexview -

Klasse IndexView (Create):

context_object_name = 'my_list' 
template_name = 'resources-management/home.html' 
queryset = Malfunction.objects.all() 
fields = '__all__' 

def get_context_data(self, **kwargs): 
    context = super(IndexView, self).get_context_data(**kwargs) 
    context['contacts'] = Contact.objects.all().order_by("firstname") 
    context['malfunctions'] = Malfunction.objects.all().order_by("-openingDate") 
    context['systems'] = System.objects.all().order_by("systemname") 
    context['units'] = Unit.objects.all().order_by("unitname") 
    # And so on for more models 
    return context 

Antwort

1

Wenn Sie ein Formular wie

<form action="" method="post"> 
    <input type="text" name="username" /> 
    <input type="submit" /> 
</form> 

Notiere die name Attribut in input Element. Dann

In django, werden Sie Daten in request.POST erhalten .So Sie

request.POST['username'] 
+0

Aus irgendeinem Grund bekomme ich diese Methode nicht erlaubt (POST):/my_url/irgendwelche Ideen warum? –

+0

Bitte posten Sie Ihre URL.py, vollständige Ansicht, ob DEBUG True oder False ist? – itzMEonTV

+0

Ich habe die url.py, das Debug-Set auf True –

1

Sie sollten die Daten auf folgende Weise zugreifen können, tun können, um

def index(request): 
    # All the post data is stored in `request.POST` 
    desc = request.POST["malfunctionDescription"] 

Sie können sehen, wie Verwenden Sie Forms in den Dokumenten, um zu erfahren, wie Sie die empfangenen Daten am besten validieren können.