首页 > 解决方案 > Django save() 不发送到数据库

问题描述

我的 from 没有将数据发送到数据库这里是我的 view.py 和 form.py 但他们没有在我的控制台上报告错误

视图.py

def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        return redirect('../login/')
    else:
        form = RegistrationForm()

        args = {'form': form}
        return render(request, 'account/register.html', args)

表格.py


class RegistrationForm(UserCreationForm):
    # first_name forms.CharField(... that i cut here to win some space
    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']

        if commit:    
            user.save()

        return user

标签: pythondjango

解决方案


你忘了打电话给form.save()你。这就是为什么您的表单永远不会被保存的原因。

使固定:

def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        form.save()  # <- ATTENTION.
        return redirect('../login/')
    else:
        form = RegistrationForm()

    return render(request, 'account/register.html', {
        'form': form,
    })

旁注

不要硬编码重定向路径(即../login)。在您的urls.py文件中,为 url 命名(例如path('login/', views.my_login, name='my_login')),并使用该名称进行重定向(例如return redirect('my_login').


推荐阅读