У меня есть простой Turbogears 2 сценария, названный app.py: "Привет, мир!"Какие символы TurboGears заменяют в URL?
#!/usr/bin/env python3
from wsgiref.simple_server import make_server
from tg import expose, TGController, AppConfig
class RootController(TGController):
@expose()
def all__things(self):
return "Hello world!"
config = AppConfig(minimal=True, root_controller=RootController())
print("Serving on port 5000...")
httpd = make_server('', 5000, config.make_wsgi_app())
httpd.serve_forever()
Когда я бегу app.py и посетить http://localhost:5000/all__things, я вижу как и ожидалось. Но эти URL-адреса также работают:
http://localhost:5000/all--things
http://localhost:5000/[email protected]@things
http://localhost:5000/all$$things
http://localhost:5000/all++things
http://localhost:5000/all..things
http://localhost:5000/all,,things
, а также комбинации:
http://localhost:5000/all-_things
http://localhost:5000/all_-things
http://localhost:5000/[email protected]
http://localhost:5000/[email protected]
http://localhost:5000/[email protected]
http://localhost:5000/[email protected]$things
Et Cetera ...
Что такое полный список символов, которые могут быть заменены подчеркиванием в TurboGears URL-адрес?
Кроме того, может ли эта функция ограничиваться только заменой определенных символов? В идеале я хочу, чтобы URL-адреса с тире (http://localhost:5000/all--things) работали, а URL-адреса с символами подчеркивания (http://localhost:5000/all__things) или любые другие странные символы, которые не работают.
Установка 'config.dispatch_path_translator = False' вызывает сбой программы, но работает' config.dispatch_path_translator = None'. В конце концов я решил: 'config.dispatch_path_translator = lambda path_piece: path_piece.replace ('-', '_'), если нет '_' в path_piece else ''' Спасибо за помощь. –
Ах да, извините, это правда/нет/функция Я написал False рефлектором как противоположность True: D Обновленный ответ – amol