2016-09-25 2 views
0

Ich versuche, eine einfache Django-App, die mit der Datenbank interagiert. Aber ich habe Probleme, mehr als einen Parameter in der URL zu übergeben.mehrere Argumente in der URL übergeben

die Argumente zu übergeben ich es tun auf diese Weise:

127.0.0.1:8000/REST/insert/?n=test/?x=2/?y=2/?z=True 

Und dann in meiner views.py ich die Parameter mit:

name = request.GET.get('n', '') 
x = request.GET.get('x', '') 
y = request.GET.get('y', '') 
z = request.GET.get('z', '') 

Klar es mache ich falsch . Wie kann ich es reparieren ?

+0

Warum ar e Sie manuell Ihre URL erstellen? –

+0

Dies funktioniert solange, bis Google Bot Ihre Website crawlt, diese Links besucht und fehlerhafte Datensätze in Ihre Datenbank einfügt. Es gibt einen Grund, warum POST existiert ... – Basic

Antwort

2

Die Trennzeichen zwischen Abfrageparametern sollten & Zeichen anstelle von Schrägstrichen und Fragezeichen (mit Ausnahme der ersten) sein.

/?n=test/?x=2/?y=2/?z=True 

sollte

/?n=test&x=2&y=2&z=True 

Hinweis sein: Ich kann nicht wirklich sicher bin, sollten Sie Abfrageparameter hier seit Ihrer URL „Einfügen“ in es verwenden sein. Wenn Sie wirklich versuchen, Dinge in eine Datenbank einzufügen, sollte dies zumindest durch eine Post-Anfrage als Post-Daten geschehen.

1

Was Sie tun möchten, ist nicht sicher. Da Sie eine Einfügeoperation ausführen, sollte der Anforderungstyp POST sein und Sie sollten die Informationen als JSON senden.

Schreiben Sie einfach die Daten als JSON und setzen Sie es in den Körper der Anfrage.

Aus Ihrer Sicht;

import json 
def your_view(request): 
    body_unicode = request.body.decode('utf-8') 
    data = json.loads(body_unicode) # This is a dictionary. 
0

Zuerst müssen Sie Ihre urls.py Datei bearbeiten, um die params zu akzeptieren, die Sie senden, Es sollte,

url (r '^ REST/Insert/$', views.YourFuntion, name = 'your-fn),

Zweite ersetzen qustion Marken und schlitzt mit & wie diese, 127.0.0.1:8000/REST/insert/?n=test & x = 2 & y = 2 & z = True

Verwandte Themen