具有多个URL模式和可选参数的相同视图

dea*_*ase 7 python django django-urls

我正在尝试设计URLconf文件,其中一个视图接受两个可选参数:dateaccount_uuid.

views.py:

@login_required
def dashboard(request, date=None, account_uuid=None):
    # some unrelated code...
Run Code Online (Sandbox Code Playgroud)

urls.py:

urlpatterns = patterns(
    'app.views',
    url(r'^dashboard$',
        'dashboard',
        name='dashboard'),
    #WHAT HERE??
)
Run Code Online (Sandbox Code Playgroud)

用户可以访问包含一个或两个参数的url.

没有参数:

http://example.com/dashboard

使用日期(ddmmyyy格式)只应该看起来像:

http://example.com/dashboard/01042015

仅限帐户UUID:

http://example.com/dashboard/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658

日期和帐户均为uuid:

http://example.com/dashboard/01042015/e1c0b81e-2332-4e5d-bc0a-895bd0dbd658

我该如何设计我的URLconf?它应该易于阅读和快速.

谢谢!

knb*_*nbk 12

使用多种模式可能是实现此目的的最简单方法:

urlpatterns = patterns('app.views',
    url(r'^dashboard$', 'dashboard', name='dashboard'),
    url(r'^dashboard/(?P<date>[\d]{8})/$', 'dashboard', name='dashboard'),
    url(r'^dashboard/(?P<account_uid>[\da-zA-Z-]{36})/$', 'dashboard', name='dashboard'),
    url(r'^dashboard/(?P<date>[\d]{8})/(?P<account_uid>[\da-z-]{36})/$', 'dashboard', name='dashboard'),
)
Run Code Online (Sandbox Code Playgroud)