我对 Django 比较陌生,并且有使用 Rails 的经验。在 Rails 中,urls.py
由于. 所以我想为我的项目“导入”一些 Rails 的行为,这样我就不必在每次添加新视图时都重写。REST
/controller/action/index
urls.py
这是我的主要urls.py
文件
from django.conf.urls import patterns, include, url
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
url(r'^$', redirect_to, {'url': '/monitor/'}),
url(r'^monitor/', include('monitor.urls')),
)
中monitor/urls.py
,我有
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'dispatcher'),
(r'^(?P<action>\w+)/(?P<id>.*$)', 'dispatcher'),
)
我的monitors.views.dispatcher
功能看起来像
def dispatcher(request, action=None, id=None):
if action == None:
action = "index"
try:
act_func = globals()[action]
except KeyError, e:
return HttpResponseNotFound("No %s action defined. Page not found." % (action))
return act_func(request, id)
我遇到了很多问题redirect
(请参阅了解 django.shortcuts.redirect),但如果这些问题出现,这似乎不是根源。无论如何,这让我开始思考,现在我不太确定我的调度员是否是一个好主意。
我还和我的一位同事讨论了如何不是很喜欢它。他说他觉得我引入了潜在的安全风险。如果有人知道代码的结构,那么您可以利用它。虽然他的论点对我来说似乎是有效的,但在我们的环境中,(除了我们之外)其他人不太可能阅读我们的代码。
无论如何,我想知道那些对 Python 和 Django 更有经验的人是怎么想的。