在Django中,能否自动将URL映射到视图方法?

在Django中,能否自动将URL映射到视图方法?,django,django-urls,Django,Django Urls,鉴于这样的观点: # my_app/views.py def index(request): ... def list(request): ... def about(request): ... 不要在url.py中为视图中的每个方法显式声明URL: # urls.py url(r'^index$', 'my_app.views.index'), url(r'^list$', 'my_app.views.list'), url(r'^about$', 'my_app.v

鉴于这样的观点:

# my_app/views.py
def index(request):
    ...
def list(request):
    ...
def about(request):
    ...
不要在
url.py
中为视图中的每个方法显式声明URL:

# urls.py
url(r'^index$', 'my_app.views.index'),
url(r'^list$', 'my_app.views.list'),
url(r'^about$', 'my_app.views.about'),
...

是否可以将视图(
my_apps.views
)交给URL调度程序,并让它处理所有视图的方法?

我想您可以有一个视图捕获URL regexp

r'^(?Pindex | list | about)/$,“myview”

具有处理捕获参数的视图

def myview(request, viewtype):
    if viewtype == 'index':
          return http.HttpResponse("I'm the index view")
    elif viewtype == 'list':
          return http.HttpResponse("I'm the list view')

但为了清晰起见,我真的建议将视图逻辑分开。与3个if/then语句相比,使用3个不同的视图及其特定功能更容易理解

是的,我坚持使用每个视图的显式声明方法。我没有太多的资源来清理我的
url.py
。谢谢我认为这是正确的选择:)对我来说,如果我需要清理urls.py,我会使用
include(new_url)
并在与视图相同的应用程序中保留一个新的URL。其优点是,在开发中,当你不断添加/删除视图方法时,它确实非常有用,而不必考虑将urls.py与视图中的方法同步。例如,PlayFramework通过允许您将url片段解析为控制器/方法名来实现这一点