0

現在、URL の 1 つが一致しないため、正しく機能していません。urls.py に次のエントリがあります

url(r'no_inventariado/nuevo/(?P<nombre>\S+)/(?P<serie>[a-zA-Z0-9_]*)/(?P<extension>\d{4})', 'inventario.views.nuevo_resguardo', name='nuevo_resguardo'),$ 

問題は にあるようです<nombre>。私が使用している URL には、大文字、小文字、スペースが含まれています<nombre>

元。

http://127.0.0.1:8000/inventario/no_inventariado/nuevo/LUIS%20%20RICARDO%20DAVID%20P/XXXBX7399F11/7070/

どうすればこれを修正できますか? どんな助けでも大歓迎です!

4

3 に答える 3

2

を許可する場合は\S+、空白以外の文字を意味し、スペースを追加してから使用します.+?

url(r'no_inventariado/nuevo/(?P<nombre>.+?)/(?P<serie>[a-zA-Z0-9_]*)/(?P<extension>\d{4})>     'inventario.views.nuevo_resguardo', name='nuevo_resguardo'),$

+?貪欲でない一致を行うには、次のスラッシュまですべての文字が一致することを意味します.+?

于 2012-05-03T20:23:05.863 に答える
2

\S空白以外のすべての文字と一致する必要があり%20ますが、例の s はエンコードされたスペースです。確かなことは言えませんが、GET リクエストが URL ハンドラに到達する前に空白がデコードされていると推測しています。これは、スペースを含まない名前でテストすることで確認できます。

(?P<nombre>[^/]+)これが問題である場合は、代わりにキャプチャ グループ (「スラッシュではないすべて」)を使用して回避できます。

于 2012-05-03T20:23:54.127 に答える
1

私は簡単なテストを行い、それは私のマシンで動作します:

from django.conf.urls import patterns, include, url
from django.http import HttpResponse

def hello(request, nombre):
    return HttpResponse('Hello: '+nombre)

urlpatterns = patterns('',
    url(r'^(?P<nombre>[a-zA-Z\s]*)/$', hello),
)

ただし、\S では機能しません

于 2012-05-03T20:25:04.913 に答える