【问题标题】:Asp.Net MVC style routing in DjangoDjango 中的 Asp.Net MVC 样式路由
【发布时间】:2011-02-02 03:11:26
【问题描述】:

我在 Asp.Net MVC 中编程已经有一段时间了,为了稍微超越 .Net 世界,我最近开始学习 Python 和 Django。我很喜欢 Django,但我在 Asp.Net MVC 中缺少的一件事是从我的 url 到我的控制器操作的自动路由。

在 Asp.Net MVC 中,我可以使用这个单一的默认路由构建我的大部分应用程序:

routes.MapRoute(
      "Default",                                              // Route name
      "{controller}/{action}/{id}",                           // URL with parameters
       new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
 );

在 Django 中,我发现自己在 urls.py 中为我想要公开的每个视图添加了一个条目,这导致了比我在 Asp.Net MVC 中习惯的更多的 url 模式。

有没有办法在 Django 中创建单个 url 模式,以类似于 Asp.Net MVC 的方式处理“[Application]/view/[params]”?也许在主要网站级别?

【问题讨论】:

  • 我想我在某处读到有可能但不建议这样做。我可以理解你想这样做(更少的工作;))但另一方面,如果你明确指定 URL 和视图,你会更加灵活(也在更改 URL 方面)。
  • 我可以理解并同意将路由定义与类分开,但如果我 80% 的路由遵循相同的约定,那么为该约定设置一个 url 模式会很好。
  • 有趣的是,我之前在 django 中开发过这个问题并迁移到 asp.net。我讨厌 asp.net 隐式路由配置,因为我觉得我无法控制它......我真的很想做路由 django 风格:)
  • @gardarh,你有没有找到一种更像 django 的 .NET MVC 路由方法?我找到的最接近的是MvcCodeRouting,但仍然不如 django urlconf 简单优雅。
  • @RonSmith 不是真的,只是在指定路线时更具体,即不要使用 {controller} 标记。不是一个非常漂亮的解决方案imo,请告诉您是否找到更好的解决方案。

标签: asp.net-mvc django


【解决方案1】:

View 不仅可以是函数,还可以是一个类。

您可以使用__call__ 方法轻松指定某种 DispatchedView 类,并根据剩余的 URI 分派到方法。此外,您还可以使用 CherryPy 调度程序来激励自己。

但是,使用命名模式并将 URI 和视图完全解耦会更好。

【讨论】:

  • 我已经看到 CherryPy 在我对其他 Python 主题的研究中出现了几次。我将不得不更多地阅读它,看看我能想出什么。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 2011-03-28
  • 1970-01-01
相关资源
最近更新 更多