2017-07-18 46 views
-2

我只是想通過調用視圖並傳遞一個變量來進行重定向。Django name'kwargs'未定義

我有以下錯誤:

name 'kwargs' is not defined 

我的觀點這是爲了獲得變量:

def view_register(request, **kwargs): 
    form = MinimumRegisterForm() 

我的觀點這是應該傳遞變量(末尾):

def view_games(request, **kwargs): 
    media = settings.MEDIA 
    if request.method == 'POST': 
     form = MinimumRegisterForm(request.POST) 
     if form.is_valid(): 
      identifiant = form.cleaned_data['identifiant'] 
      email = form.cleaned_data['email'] 
      password = form.cleaned_data['password'] 
      confirm_password = form.cleaned_data['confirm_password'] 
      sex = form.cleaned_data['sex'] 
      if User.objects.filter(email=email).exists(): 
       messages.add_message(request, messages.INFO, 'Cette adresse email est déjà utilisé.') 
       return redirect(view_register)    
      if password == confirm_password: 
       strengh = password[0].isalpha() 
       if all(c.isalpha() == strengh for c in password): 
        messages.add_message(request, messages.INFO, 'Le mot de passe doit contenir au moins 8 charactères lettres et chiffres.') 
        return redirect(view_register, identifiant=kwargs['identifiant'])** 

我錯過了什麼嗎?

+0

我沒有看到你有'view_games'中定義的'kwargs'。 –

+0

必須是'def view_games(request,* args,** kwargs):' – dmitryro

回答

2

view_games中,您嘗試使用kwargs,但它不是參數。該函數聲明應該讀...

def view_games(request, **kwargs) 

,你得到這個錯誤,但是,沒got unexpected keyword argument in view_games,使我認爲你缺少你identifiant參數kwargs的事實。這可能是下一個問題。

+0

True。我現在有一個錯誤:KeyError在/開始/遊戲/ '辨認' – GrandGTO

2

正確,你的def view_games(request)函數原型不接受任何kwargs。

相反,也許你想給identifiant(kwarg)傳遞給view_register像這樣:

... 
return redirect(view_register, identifiant=identifiant) 
+0

我有一個錯誤:相反的'start.views.view_register'與關鍵字參數'{'識別符':'Clément'}'找不到。 1模式嘗試:['開始/銘文/'] – GrandGTO

1

看起來像你只需要自失蹤** kwargs添加到您的函數定義,所以「kwargs未定義「錯誤似乎是邏輯......它確實是未定義的!

+0

因此總結:def view_games(請求,** kwargs):應該做的伎倆! –

+0

謝謝,但我現在有一個錯誤:KeyError at/start/games /'identifiant' – GrandGTO

+0

根據對dimmg的其他答案,看起來他是對的,你根本不應該使用kwargs!由於您從表單中識別出來(識別符= form.cleaned_data ...),所以您的問題似乎在其他地方......您可能會在調用register()之前嘗試打印「識別」值,並確保這是一個包含Clement的原始字符串,例如不是字典。順便說一句,複製/過去完整的錯誤(文件/行號)可能會有所幫助! –