Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:命名Url';s/相同的正则表达式,不同的名称_Python_Regex_Django - Fatal编程技术网

Python Django:命名Url';s/相同的正则表达式,不同的名称

Python Django:命名Url';s/相同的正则表达式,不同的名称,python,regex,django,Python,Regex,Django,我有一个URL.py文件,其中包含多个URL,这些URL具有相同的命名参数和正则表达式,但名称不同。当我使用{%url'name'param%}从模板调用视图函数时,它会调用url.py文件中的第一个函数,而不考虑名称。以下是URL.py的内容: urlpatterns = patterns('accountsearch.views', url(r'^$', 'account_search', name='account_search'), url(r'(?P<account_uuid&g

我有一个URL.py文件,其中包含多个URL,这些URL具有相同的命名参数和正则表达式,但名称不同。当我使用{%url'name'param%}从模板调用视图函数时,它会调用url.py文件中的第一个函数,而不考虑名称。以下是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_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'),
但是,如果我将URL.py中URL的顺序更改为:

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'),

它调用reset_security_questions函数。我哪里做错了

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'),
urlpatterns=patterns('accountsearch.views',
url(r'^$'、'account_search',name='account_search'),
url(r'^reset password/(?P[a-zA-Z0-9\-]+)/(?P[a-zA-Z0-9\-]+)/$,'reset_password',name='reset_password'),
url(r'^security questions/(?P[a-zA-Z0-9\-]+)/(?P[a-zA-Z0-9\-]+)/$,'reset_securityquestions',name='reset_securityquestions'),

我不明白如果Django的URL模式完全相同,你怎么会希望Django知道要使用哪个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\-]+)/$'
r'reset/(?P[a-zA-Z0-9\-]+)/(?P[a-zA-Z0-9\-]+)/$”
r'安全/(?P[a-zA-Z0-9\-]+)/(?P[a-zA-Z0-9\-]+)/$'

我是Django的新手,我在想,因为我指定了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'),
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\-]+)/$'