2016-04-05 5 views
0

Ich habe ähnliche Fragen gesehen, das ist kein Duplikat. Ich habe eine einfache Weiterleitung, die Kwargs empfängt, die nicht funktioniert, und ich weiß nicht warum. Die docs dieses Beispiel:Django Umleitung mit Kwargs funktioniert nicht

def my_view(request): 
    ... 
    return redirect('some-view-name', foo='bar') 

Und es ist genau das, was ich tue:

... 
... 
return redirect('perfiles:despues_contacto', razon_contacto='donacion', correo_contacto='[email protected]') 

Die URL-Muster wie folgt aussehen:

url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[-\w]+)/$', 
     views.DespuesContacto.as_view(), name="despues_contacto"), 

¿Was bin ich fehle ? vielleicht ist es etwas Offensichtliches ... aber meine Augen sind es leid, den Fehler zu finden. Ist es die Regex?

+0

Was ist die vollständige Fehlermeldung? – Selcuk

+0

@Selcuk 'Reverse für 'despues_contacto' mit Argumenten '()' und Schlüsselwortargumenten '{' razon_contacto ': u'donacion', 'correo_contacto': u'[email protected] '}' nicht gefunden. 1 Muster versucht (en): [u'perfil/gracias_por_contactarnos/(? P [- \\ w] +)/(? P [- \\ w] +)/$ '] '.. Sieht aus wie die Regex. – alejoss

+1

Es sieht so aus, als ob Ihre correo_contacto Regex keine @ und Punkt (.) Zeichen akzeptiert. – Selcuk

Antwort

1

.Sehr einfach. Sie ändern nur den regulären Ausdruck der URL zu diesem Parameter und haben @ Zeichen.

urls.py

url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\[email protected]]+)/$', 
    views.DespuesContacto.as_view(), name='despues_contacto'), 
+0

Danke für die Antwort Mann. Ich werde diese Antwort akzeptieren. Aber die Regex ist unvollständig, sie muss auch Punkte akzeptieren. Bitte aktualisiere es und ich werde es akzeptieren. – alejoss

+0

Sie müssen Punkte nach @ in Regex hinzufügen –

1

Ok, also die Regex war falsch, es hat nicht "@" oder "." ... und weil es wirklich schwierig ist, eine Regex für E-Mails zu verwenden, wie in this SO Frage beschrieben. Ich habe die E-Mail verarbeitet, sie an die URL gesendet und sie manuell erneut erstellt:

+1

Was ist, wenn die ursprüngliche E-Mail bereits "" - "vor" hat "@" '? Es wird falsche E-Mail neu erstellen. Wenn Sie es so machen müssen, verwenden Sie einen komplexeren Bezeichner für "@", also '" --__-- "'. – primoz