Eine kurze Analyse der Einstellungsmethode der URL im web.py-Framework von Python

WBOY
Freigeben: 2016-08-04 08:55:51
Original
1330 Leute haben es durchsucht

Es gibt zwei Möglichkeiten, Daten in Webseiten zu übertragen: GET und POST übergibt Parameter in Form von URLs, die in web.py gut übereinstimmen, wenn wir die folgenden URLs konfigurieren

 urls =(
  '/','index',
  '/weixin/(.*?)','WeixinInterface'
  
  )
Nach dem Login kopieren

Ignorieren Sie, was nach /weixin/ kommt, schreiben wir jetzt die Indexklasse

 class index:
  def GET(self):
    i = web.input(name = 'kevinkelin',age = 100)     
    return render.index(i.name,i.age)
Nach dem Login kopieren

Schreiben Sie eine beliebige index.html-Vorlagendatei

 $def with(name,age)
$if name:
  I just want to say <em>hello</em> to $name, he is $age years old
$else:
  <em>hello</em>,world!
Nach dem Login kopieren

Beim Zugriff auf http://127.0.0.1:8080/ werden die Werte für Name und Alter nicht übergeben. Da die Standardwerte für Name und Alter in meiner GET-Funktion definiert sind, übergibt das Programm Kevin und 26 um die folgende Ausgabe in der Vorlage zu erhalten

I just want to say hello to kevinkelin, he is 100 years old
Nach dem Login kopieren

Beim Zugriff auf http://127.0.0.1:8080/?name=yyx&age=26, d. h. bei Übergabe von name = yyx und age = 26 an die GET-Funktion, wird die folgende Ausgabe erhalten

I just want to say hello to yyx, he is 26 years old
Nach dem Login kopieren
Nach dem Login kopieren

Wir können die Standardparameter auch nicht definieren, also als leer definieren

i = web.input(name = None,age = None)
Nach dem Login kopieren

Wenn Sie auf http://127.0.0.1:8080/ zugreifen, erhalten Sie die Ausgabe von „hello, world!“, also dem „else“
in der Vorlage Wenn Sie jedoch keinen Namen und kein Alter angeben, tritt ein Fehler auf

i = web.input()
Nach dem Login kopieren

Dies liegt daran, dass Sie der Vorlage später i.name und i.age zuweisen, diese beiden Variablen jedoch nicht in den globalen Variablen enthalten sind, sodass ein Fehler gemeldet wird
Aber manchmal möchten wir solche Parameter übergeben, ohne das „?“ hinzuzufügen. Dann müssen wir die URL-Regeln ändern

 urls =(
  '/name=(.*)&age=(.*)','index',
  '/weixin/(.*&#63;)','WeixinInterface'  
  )
Nach dem Login kopieren

Klassenindex neu schreiben

 class index:
  def GET(self,name,age):
    return render.index(name,age)
Nach dem Login kopieren

Hier geht es darum, die Parameter der URL durch regulären Abgleich abzugleichen und sie dann an die Parameter von GET in der Indexklasse zu übergeben
Wenn Sie auf http://127.0.0.1:8080/name=yyx&age=26 zugreifen, erhalten Sie

I just want to say hello to yyx, he is 26 years old
Nach dem Login kopieren
Nach dem Login kopieren

Die zweite Methode scheint einfach zu sein, ist aber tatsächlich schwer zu kontrollieren und erfordert einen erhöhten Arbeitsaufwand beim Schreiben regulärer Ausdrücke
Wenn ich wissen möchte, wie viele Parameter über GET übergeben werden, kann ich direkt zurückkehren, um zu sehen, welche übergeben werden
Schauen wir uns als Nächstes die Daten aus dem Beitrag an:
Wir können ein einfaches Formular erstellen oder Fiddler direkt verwenden, um Daten zu erstellen und den Wert POST

def POST(self):
    data = web.data()    
    return data
Nach dem Login kopieren

2016711194530065.png (698×539)

Ich möchte den erhaltenen Datentyp sehen

return type(data)
Nach dem Login kopieren

Was Sie erhalten, ist , was bedeutet, dass web.py die Beitragsdaten in den Typ str konvertiert hat
Dann lass mich versuchen, XML zu übergeben

 <xml>
<ToUserName>yanxingyang</ToUserName>
<FromUserName>study_python</FromUserName>
<CreateTime>123456</CreateTime>
<MsgType>text</MsgType>
<Content>Just a test</Content>
</xml>
Nach dem Login kopieren

Tatsächlich wurden einige Änderungen am XML-Format von WeChat vorgenommen. Lassen Sie mich versuchen, es mit lxml zu analysieren

from lxml import etree
data = web.data()
xml = etree.fromstring(data)
content = xml.find(‘Content').text
return content
Nach dem Login kopieren

Die erzielten Ergebnisse sind großartig

2016711194622132.png (244×124)

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage