2016-07-02 7 views
2

Ich habe ein Problem mit meinem Django-Projekt konfrontiert. Es ist wie folgt: Ich hatte eine einfache regexp die BenutzerDjango _view_() braucht 1 Positionsargument aber 2 wurden gegeben

url(r'^users/\w+/$', views.user) 

passen und es funktionierte perfekt.

Dann änderte ich den regexpt, weil es ein Update in der Benutzer-Logins war, so jetzt ist es (ich das Punktsymbol hinzugefügt):

url(r'^users/([a-zA-Z0-9.]+)/$', views.user) 

Und jetzt bin ich immer die „user() nimmt 1 Positionsargument aber 2 wurden gegeben "Django Fehler.

ist die Ansicht wie folgt definiert:

def user(request): 
    return render(request, 'home/user_page.html') 
+0

Sie nicht immer den unterschiedlichen Teil der URL ('[a-zA -Z0-9.] + ') In Ihrem Code? Um die Datenbank oder etwas abzufragen? – aumo

Antwort

7

Wie in der Fehlermeldung angegeben, muss Ihre Ansicht nach einem zweiten Parameter nehmen:

def user(request, second_param): 
    return render(request, 'home/user_page.html') 

Dies liegt daran, eine Gruppe in dem zugegebenen regex (der Teil zwischen den Klammern) und Django übergibt alle übereinstimmenden Gruppen als Argumente an die Ansicht.

Wenn Sie das bisherige Verhalten bevorzugen, die Klammer aus dem Regex entfernen:

r'^users/[a-zA-Z0-9.]+/$' 

Relevante Dokumentation: https://docs.djangoproject.com/en/1.9/topics/http/urls/#how-django-processes-a-request

+1

Als Sie sehr viel! Wirklich den Fall gelöst :-) –

Verwandte Themen