【问题标题】:Django save() not sending to databaseDjango save() 不发送到数据库
【发布时间】:2020-02-17 23:11:08
【问题描述】:

我的 from 没有向数据库发送数据 这是我的 view.py 和 form.py 然而他们并没有在我的控制台上报告错误

views.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)

forms.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

【问题讨论】:

  • 在views.py中你忘了form.save()

标签: python django


【解决方案1】:

在你看来,你忘了打电话给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 文件中,为网址命名(例如path('login/', views.my_login, name='my_login')),并使用该名称进行重定向(例如return redirect('my_login')

【讨论】:

  • 我之前已经尝试过了,但是提交时出现错误:IntegrityError at /register/ UNIQUE constraint failed: auth_user.username
  • @XetaWays 看看这是否有帮助:stackoverflow.com/questions/33093754/… 否则,请提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 2020-10-01
  • 1970-01-01
  • 2017-01-16
  • 2023-04-07
  • 2017-06-23
  • 1970-01-01
相关资源
最近更新 更多