Django:命名的Url/相同的regex,不同的名称

2024-10-04 09:30:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网址.py包含多个具有相同名称的paramaters和regex但名称不同的url的文件。当我使用{%url'name'param%}从模板调用视图函数时,它调用网址.py不顾名字而归档。以下是网址.py公司名称:

urlpatterns = patterns('accountsearch.views',
url(r'^$', 'account_search', name='account_search'),
url(r'(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$','reset_password',name='reset_password'),
url(r'(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$','reset_securityquestions',name='reset_securityquestions'),

我正在尝试使用从模板调用reset\u securityquestions

^{pr2}$

但是,如果我更改URL在网址.py为此:

urlpatterns = patterns('accountsearch.views',
url(r'^$', 'account_search', name='account_search'),
url(r'(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$', 'reset_securityquestions',
    name='reset_securityquestions'),
url(r'(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$', 'reset_password', name='reset_password'),

并使用

{% url 'reset_password' account.uuid user.uuid %}

它调用reset_security_questions函数。我哪里出错了?在


Tags: namepy名称模板urlsearchuuidaccount
2条回答

我不明白如果Django和Django的URL模式完全相同,那么他们怎么会知道要使用哪个URL。当请求进来时,Django所要做的就是URL本身,它将始终尝试按顺序匹配这些URL。在切换模式下,您会发现reset\u password视图现在不起作用。在

你需要给Django一些区分它们的方法。通常会使用一些文字作为前缀或后缀,例如:

r'reset/(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$'
r'security/(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$'

Django总是以第一个匹配的url模式为基础,因此将url重写为:

urlpatterns = patterns('accountsearch.views',
   url(r'^$', 'account_search', name='account_search'),
   url(r'^reset-password/(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$','reset_password',name='reset_password'),
   url(r'^security-question/(?P<account_uuid>[a-zA-Z0-9\-]+)/(?P<user_uuid>[a-zA-Z0-9\-]+)/$','reset_securityquestions',name='reset_securityquestions'),

相关问题 更多 >