在 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/