2017-02-14 10 views
-1

Я пытаюсь создать регистрационную форму с информацией, добавленной в модель профиля, но она продолжает давать мне анонимный пользователь, когда я его отправлю. Что я здесь делаю неправильно?Django Регистрационная форма, анонимный пользователь?

Мой forms.py:

class RegisterForm(forms.ModelForm): 
    Gebruikersnaam = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Gebruikersnaam'}), max_length=20, label="") 
    Wachtwoord = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Wachtwoord'}), label="") 
    Emailadres = forms.EmailField(required=False, widget=forms.TextInput(attrs={'placeholder': 'E-mailadres'}), label="") 
    Profielfoto = forms.ImageField(required=False, label="") 
    Biografie = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': 'Biografie'}), max_length=150, label="") 

class Meta: 
    model = Profiel 
    fields = ['Gebruikersnaam', 'Wachtwoord', 'Emailadres', 'Profielfoto', 'Biografie'] 

Мой models.py:

class Profiel(models.Model): 
    user = models.OneToOneField(User, primary_key=True) 
    Profielfoto = models.ImageField() 
    Biografie = models.CharField(max_length=150) 

и мой Views.py:

def step3(request): 

    if request.method == 'POST': 
     form = RegisterForm(request.POST) 
     if form.is_valid(): 
      Registratieform = form.save(commit=False) 
      username = form.cleaned_data['Gebruikersnaam'] 
      password = form.cleaned_data['Wachtwoord'] 
      user = authenticate(username=username, password=password) 

      Registratieform.user = request.user # Set the user object here 
      Registratieform.save() # Now you can send it to DB 
      if Registratieform.user is not None: 
       if Registratieform.user.is_active: 
        login(request, Registratieform.user) 
        return redirect('/Dashboard/') 

      return render_to_response("Home/index.html", {'form': form}) 
    else: 
     form = RegisterForm() 
    return render(request, 'Home/index.html', {'form': form}) 

ответ

0

Конечно, пользователь неаутентифицированное перед регистрацией , Ожидаете ли вы authenticate для возврата существующего пользователя? Вы должны хотя бы проверить, что он действительно возвращает пользователя; и если это так, вы должны использовать этот результат, а не request.user.

(Кроме того, примечание об именовании, вы должны использовать имена в нижнем регистре для экземпляров, например, возвращаемое значение от form.save(). Обратите также внимание, что результатом этого является экземпляр модели Profiel, а не формы; так что вы не должны называть его «Registratieform», но profiel)

Редактировать Чтобы создать пользователь, вызовите User.objects.create_user:.

if form.is_valid(): 
    profiel = form.save(commit=False) 
    username = form.cleaned_data['Gebruikersnaam'] 
    password = form.cleaned_data['Wachtwoord'] 
    email = form.cleaned_data['Emailadres'] 
    user = User.objects.create_user(username=username, password=password, email=email) 
    profiel.user = user 
    profiel.save() 
+0

пользователя действительно является неаутентифицированным перед регистрацией. Как правильно создать пользователя с представленной формой? Я все еще учусь и не могу решить эту проблему. – Acework