我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用werkzeug.urls.url_decode()。
def method_rewrite_middleware(app, input_name='__METHOD_OVERRIDE__'): allowed_methods = frozenset(('GET', 'POST', 'PUT', 'DELETE')) def _middleware(environ, start_response): query_string = environ.get('QUERY_STRING', '') if input_name in query_string: args = url_decode(query_string) method = args.get(input_name) if method in allowed_methods: environ['REQUEST_METHOD'] = method return app(environ, start_response) return _middleware
def args(self): """The parsed URL parameters. By default an :class:`~werkzeug.datastructures.ImmutableMultiDict` is returned from this function. This can be changed by setting :attr:`parameter_storage_class` to a different type. This might be necessary if the order of the form data is important. """ return url_decode(wsgi_get_bytes(self.environ.get('QUERY_STRING', '')), self.url_charset, errors=self.encoding_errors, cls=self.parameter_storage_class)
def login_url(login_view, next_url=None, next_field='next'): ''' Creates a URL for redirecting to a login page. If only `login_view` is provided, this will just return the URL for it. If `next_url` is provided, however, this will append a ``next=URL`` parameter to the query string so that the login view can redirect back to that URL. :param login_view: The name of the login view. (Alternately, the actual URL to the login view.) :type login_view: str :param next_url: The URL to give the login view for redirection. :type next_url: str :param next_field: What field to store the next URL in. (It defaults to ``next``.) :type next_field: str ''' if login_view.startswith(('https://', 'http://', '/')): base = login_view else: base = url_for(login_view) if next_url is None: return base parts = list(urlparse(base)) md = url_decode(parts[4]) md[next_field] = make_next_param(base, next_url) parts[4] = url_encode(md, sort=True) return urlunparse(parts)
def args(self): """The parsed URL parameters (the part in the URL after the question mark). By default an :class:`~werkzeug.datastructures.ImmutableMultiDict` is returned from this function. This can be changed by setting :attr:`parameter_storage_class` to a different type. This might be necessary if the order of the form data is important. """ return url_decode(wsgi_get_bytes(self.environ.get('QUERY_STRING', '')), self.url_charset, errors=self.encoding_errors, cls=self.parameter_storage_class)
def get_login_url(callback='oob', consumer_key=None, consumer_secret=None): twitter = Twitter( auth=OAuth('', '', consumer_key, consumer_secret), format='', api_version=None) resp = url_decode(twitter.oauth.request_token(oauth_callback=callback)) oauth_token = resp['oauth_token'] oauth_token_secret = resp['oauth_token_secret'] token = OAuthToken(token=oauth_token, token_secret=oauth_token_secret) db.session.merge(token) db.session.commit() return ( "https://api.twitter.com/oauth/authenticate?oauth_token=%s" % (oauth_token,))
def receive_verifier(oauth_token, oauth_verifier, consumer_key=None, consumer_secret=None): temp_token = OAuthToken.query.get(oauth_token) if not temp_token: raise Exception("OAuth token has expired") twitter = Twitter( auth=OAuth(temp_token.token, temp_token.token_secret, consumer_key, consumer_secret), format='', api_version=None) resp = url_decode( twitter.oauth.access_token(oauth_verifier=oauth_verifier)) db.session.delete(temp_token) new_token = OAuthToken(token=resp['oauth_token'], token_secret=resp['oauth_token_secret']) new_token = db.session.merge(new_token) new_twitter = Twitter( auth=OAuth(new_token.token, new_token.token_secret, consumer_key, consumer_secret)) remote_acct = new_twitter.account.verify_credentials() acct = account_from_api_user_object(remote_acct) acct = db.session.merge(acct) new_token.account = acct db.session.commit() return new_token
def test_url_decoding(self): x = urls.url_decode(b'foo=42&bar=23&uni=H%C3%A4nsel') self.assert_strict_equal(x['foo'], u'42') self.assert_strict_equal(x['bar'], u'23') self.assert_strict_equal(x['uni'], u'Hänsel') x = urls.url_decode(b'foo=42;bar=23;uni=H%C3%A4nsel', separator=b';') self.assert_strict_equal(x['foo'], u'42') self.assert_strict_equal(x['bar'], u'23') self.assert_strict_equal(x['uni'], u'Hänsel') x = urls.url_decode(b'%C3%9Ch=H%C3%A4nsel', decode_keys=True) self.assert_strict_equal(x[u'Üh'], u'Hänsel')
def test_url_bytes_decoding(self): x = urls.url_decode(b'foo=42&bar=23&uni=H%C3%A4nsel', charset=None) self.assert_strict_equal(x[b'foo'], b'42') self.assert_strict_equal(x[b'bar'], b'23') self.assert_strict_equal(x[b'uni'], u'Hänsel'.encode('utf-8'))
def test_partial_unencoded_decode(self): ref = u'foo=????'.encode('euc-kr') x = urls.url_decode(ref, charset='euc-kr') self.assert_strict_equal(x['foo'], u'????')
def parse_url(self, url_string): url = urlparse(url_string) url = self.validate_url(url) url_adapter = self.url_map.bind(server_name=url.hostname, url_scheme=url.scheme, path_info=url.path) query_args = url_decode(url.query) return url, url_adapter, query_args