在Django中,您可以自动将URL映射到查看方法吗?

Nik*_*rez 8 django django-urls

鉴于这样的观点:

# my_app/views.py
def index(request):
    ...
def list(request):
    ...
def about(request):
    ...
Run Code Online (Sandbox Code Playgroud)

而不是urls.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'),
...
Run Code Online (Sandbox Code Playgroud)

是否可以只为URL调度程序提供view(my_apps.views)并让它处理所有视图的方法?

Yuj*_*ita 1

我想你可以有一个捕获 url 正则表达式的视图,

r'^(?P<viewtype>index|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')
Run Code Online (Sandbox Code Playgroud)

但为了清晰起见,我真的建议将视图逻辑分开。遵循 3 个不同的视图及其特定功能比遵循 3 个 if / then 语句要容易得多。