首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cherrypy URL问题

cherrypy URL问题
EN

Stack Overflow用户
提问于 2014-11-04 04:08:23
回答 1查看 335关注 0票数 0

我在cherrypy中有一个URL,类似于堆栈溢出:

代码语言:javascript
复制
http://sample.com/post/12345/hello-world

但是,我想让以下URL在cherrypy中也起作用:

代码语言:javascript
复制
http://sample.com/post/12345/hello-world?from=something&else=123

并应更正为:

代码语言:javascript
复制
http://sample.com/post/12345/hello-world

我怎么能这么做?

我正在使用popargs和_cp_dispatch,但没有成功。如有任何建议,将不胜感激。

谢谢

编辑

我让它基于saaj的答案工作,但是我想将代码移到index(),urls都返回404。

代码语言:javascript
复制
import cherrypy

class App:

@cherrypy.expose
def index(self, id, name = None, **kwargs):
  if kwargs:
    # do your querystring processing
    raise cherrypy.HTTPRedirect(cherrypy.url())

  if not name:
    # get name part for canonical url
    name = '{0}/hello-world'.format(id)
    raise cherrypy.HTTPRedirect(cherrypy.url(name))

    return '{0} {1} {2}'.format(id, name, kwargs)

if __name__ == '__main__':
  cherrypy.quickstart(App(), '/post', config)

更多的帮助是非常感谢的。我仍然是一个快乐的初学者。

EN

回答 1

Stack Overflow用户

发布于 2014-11-04 11:13:18

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-


import cherrypy


config = {
  'global' : {
    'server.socket_host' : '127.0.0.1',
    'server.socket_port' : 8080,
    'server.thread_pool' : 8
  },
}


class App:

  @cherrypy.expose
  def index(self):
    return '''
      <ul>
        <li>
          <a href='/post/12345/hello-world'>/post/12345/hello-world</a>
        </li>
        <li>
          <a href='/post/12345/hello-world?from=something&else=123'>
            /post/12345/hello-world?from=something&else=123</a>
        </li>
        <li><a href='/post/12345'>/post/12345 (more like SO)</a></li>        
      </ul>
    '''

  @cherrypy.expose
  def post(self, id, name = None, **kwargs):       
    if kwargs:
      # do your querystring processing
      raise cherrypy.HTTPRedirect(cherrypy.url())

    if not name:
      # get name part for canonical url
      name = '{0}/hello-world'.format(id)
      raise cherrypy.HTTPRedirect(cherrypy.url(name))

    return '{0} {1} {2}'.format(id, name, kwargs)


if __name__ == '__main__':
  cherrypy.quickstart(App(), '/', config)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26727608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档