some source code 我是
写作,我可以提出以下要求:

http://proxy.metaperl.org/index/bitgold-rw1

并让它成功重定向。

但是,我想从 URL 中删除 index 并保留它
使用 index() 方法重定向。我尝试将 index() 重命名为default() 阅读后
Dispatching ,
但它仍然不允许我有这样的 URL:
http://proxy.metaperl.org/bitgold-rw1

它试图找到一个名为 bitgold-rw1 的方法,而不是使用
解决请求的默认方法,给我错误:
NotFound: (404, "The path '/bitgold-rw1' was not found.")

WSGI 启动文件如下所示:
# -*- python -*-

# core
import os
import sys

# 3rd party
import cherrypy

# local
def full_path(*extra):
    return os.path.join(os.path.dirname(__file__), *extra)

sys.path.insert(0, full_path())
import config
import myapp

application = cherrypy.Application(
    myapp.Root(),
    "/",
    config.config)

最佳答案

正如@ralhei 所提到的,@saaj 如果您不想在cherrypy 中处理调度程序,那么默认方法是关键。我尝试了下面的代码并按您的意愿工作

class Root(object):

    @cherrypy.expose
    def index(self, tag):
        redirect_url = db.urls[tag]
        ip = cherrypy.request.headers['Remote-Addr']
        request_url = 'http://ipinfo.io/{0}/country'.format(ip)
        r = requests.get(request_url)
        country = r.text.strip()
        raise cherrypy.HTTPRedirect(redirect_url)

    @cherrypy.expose
    def default(self,tag):
        return self.index(tag)

关于python - 在cherrypy中默认根 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32368447/

10-16 16:18