>백엔드 개발 >파이썬 튜토리얼 >Python의 web.py 프레임워크에서 url 설정 방법에 대한 간략한 분석

Python의 web.py 프레임워크에서 url 설정 방법에 대한 간략한 분석

WBOY
WBOY원래의
2016-08-04 08:55:511353검색

웹 페이지에서 데이터를 전송하는 방법에는 GET과 POST의 두 가지가 있습니다. GET은 URL 형식으로 매개변수를 전달하며 이는 web.py에서 잘 일치합니다

 urls =(
  '/','index',
  '/weixin/(.*?)','WeixinInterface'
  
  )

/weixin/ 뒤에 오는 내용은 무시하고 이제 인덱스 클래스를 작성해 보겠습니다

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

index.html 템플릿 파일 작성

 $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!

http://127.0.0.1:8080/에 접속하면 이름과 나이 값이 전달되지 않습니다. 기본 이름과 나이 값은 내 GET 함수에 정의되어 있으므로 프로그램은 kevinkelin과 26을 전달합니다. 템플릿에서 다음 출력을 얻으려면

I just want to say hello to kevinkelin, he is 100 years old

http://127.0.0.1:8080/?name=yyx&age=26에 접속하면, 즉 name = yyx, age = 26을 GET 함수에 전달하면 다음과 같은 출력을 얻습니다

I just want to say hello to yyx, he is 26 years old

기본 매개변수는 정의할 수 없습니다. 즉, 비어 있는 매개변수로 정의할 수 있습니다.

i = web.input(name = None,age = None)

http://127.0.0.1:8080/에 액세스하면 템플릿의 else
인 hello, world!가 출력됩니다. 하지만 이름과 나이를 정의하지 않으면 오류가 발생합니다

i = web.input()

나중에 템플릿에 i.name과 i.age를 할당했는데 이 두 변수가 전역 변수에 없어 오류가 보고되기 때문입니다
하지만 때로는 "?"를 추가하지 않고 이와 같은 매개변수를 전달하고 싶을 때도 있습니다. 그러면 URL 규칙을 변경해야 합니다

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

클래스 인덱스 다시 작성

 class index:
  def GET(self,name,age):
    return render.index(name,age)

정규 매칭을 통해 URL의 매개변수를 일치시킨 후 인덱스 클래스의 GET 매개변수에 전달하는 방법입니다
http://127.0.0.1:8080/name=yyx&age=26에 접속하면
을 얻게 됩니다.

I just want to say hello to yyx, he is 26 years old

두 번째 방법은 간단해 보이지만 실제로는 제어하기 어렵고 정규식을 작성하는 작업량도 늘어납니다
GET을 통해 몇 개의 매개변수가 전달되는지 알고 싶다면 어떤 매개변수가 전달되었는지 직접 확인할 수 있습니다
다음으로 게시물의 데이터를 살펴보겠습니다.
간단한 양식을 만들거나 Fiddler를 직접 사용하여 데이터를 구성하고 값을 POST할 수 있습니다

def POST(self):
    data = web.data()    
    return data

2016711194530065.png (698×539)

얻은 데이터 유형을 보고 싶습니다

return type(data)

얻는 것은 3f101342681027e5bd1639543505866a입니다. 이는 web.py가 게시물 데이터를 str 유형으로 변환했음을 의미합니다
그럼 XML을 전달해 보겠습니다

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

사실 WeChat의 XML 형식이 일부 변경되었습니다. lxml을 사용하여 구문 분석해 보겠습니다.

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

결과가 훌륭합니다

2016711194622132.png (244×124)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.