扩展注册表单发布,但不保存到数据库

时间:2019-05-07 18:24:03

标签: django post

我已经在Django中扩展了注册表单,该表单基于UserCreationForm。它将发布数据,但不会将其提交给数据库。我误会了什么?

我的登录名可以在我的views.py片段下找到。

我添加了表单验证,以检查表单,同时也进行了检查,以查看所发布的内容。在chrome inspector的“网络”标签下,我在表单标题下看到了这一点:

Form data:
csrfmiddlewaretoken: 3GHtaasjvJ5Qbl3qvDB9loxCdgYdtZ0aRwG0g5n3sjlopGUZlNt1wEOaLNVLdIe7
first_name: dfhdsfh
last_name: dfghfgh
username: dfhg
email: hdghgfh@sdg.dk
password: lolleren123
password2: lolleren123

我的文件如下。我已经清理了代码,所以这里只显示必要的代码。

urls.py

from django.urls import path, re_path, reverse_lazy
from . import views
from django.contrib.auth import views as auth_views

app_name = 'accounts'

urlpatterns = [
    path('login', views.login_view, name='login'),
    path('signup', views.signup_view, name='signup'),
    path('logout', views.logout_view, name='logout'),
]

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = (
            'username',
            'first_name',
            'last_name',
            'email',
            'password1',
            'password2'
        )

    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.first_name = cleaned_data['first_name']
        user.last_name = cleaned_data['last_name']
        user.email = cleaned_data['email']

        if commit:
            user.save()

        return user

views.py

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth import login, logout
from accounts.forms import RegistrationForm
from django.contrib import messages


def signup_view(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            messages.success(request, "Your user is created - Thank you for joining us")
            login(request, user)
            return redirect('lol')
    else:
        form = RegistrationForm()
    return render(request, 'index.html', {'form': form})

def login_view(request):
    if request.method == 'POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            user = form.get_user()
            login(request, user)
            messages.success(request, "You've been logged in!")
            return redirect('profiles:profile', request.user.username)
    else:
        form = AuthenticationForm()
    return render(request, '/', {'form': form})

index.html

<form action="{% url 'accounts:signup' %}" name="sign_up" method="post" autocomplete="off">
    {% csrf_token %}
    <div class="top-row">
        <div class="field-wrap">
            <label>
                First Name
            </label>
            <input type="text" autocomplete="off" name="first_name" required />
        </div>

        <div class="field-wrap">
            <label>
                Last Name
            </label>
            <input type="text" autocomplete="off" name="last_name" required />
        </div>
    </div>
    <div class="top-row">
        <div class="field-wrap">
            <label>
                Username
            </label>
            <input type="text" autocomplete="off" name="username" required />
        </div>

        <div class="field-wrap">
            <label>
                E-mail
            </label>
            <input type="email" autocomplete="off" name="email" required />
        </div>
    </div>
    <div class="top-row">
        <div class="field-wrap">
            <label>
                Password
            </label>
            <input type="password" autocomplete="off" name="password" required />
        </div>

        <div class="field-wrap">
            <label>
                Repeat
            </label>
            <input type="password" autocomplete="off" name="password2" required />
        </div>
    </div>
    <button type="submit" class="button button-block">Register</button>
</form>

我是新手,所以我希望能被引导到错误的正确路径,并且很难理解错误的出处。

0 个答案:

没有答案
相关问题