【问题标题】:When I clicked on submit button nothing showed up in my database当我单击提交按钮时,我的数据库中没有任何显示
【发布时间】:2020-07-18 13:02:02
【问题描述】:

我有一个注册表单,但是当我单击提交按钮时,我的数据库中没有显示任何内容,并且当我创建超级用户时,该用户已保存到数据库中,但如果我使用该表单进行注册,它什么也不做。

forms.py

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


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

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)
        self.fields['first_name'].widget.attrs.update({'placeholder': 'First Name', 'id': 'first-name'})
        self.fields['last_name'].widget.attrs.update({'placeholder': 'Last Name', 'id': 'last-name'})
        self.fields['email'].widget.attrs.update({'placeholder': 'Email Address', 'id': 'email-address'})
        self.fields['password1'].widget.attrs.update({'placeholder': 'New Password', 'id': 'password1'})
        self.fields['password2'].widget.attrs.update({'placeholder': 'Re-enter New Password', 'id': 'password2'})

views.py

# login and register function
def loginAndRegister(request):
    # register form
    if request.method == 'POST':
        registerForm = RegisterForm(request.POST)
        if registerForm.is_valid():
            registerForm.save()
            messages.success(request, 'Your account has created successfully! you can log in now')
            return redirect('login')
    else:
        registerForm = RegisterForm()

    context = {'registerForm': registerForm}
    return render(request, 'account/loginAndRegisterPage.html', context)

html 视图

<form method='POST'>
  {% csrf_token %}
  
  <li>{{ registerForm.first_name }}</li>
  <li>{{ registerForm.last_name }}</li>
  <li>{{ registerForm.email }}</li>
  <li>{{ registerForm.password1 }}</li>
  <li>{{ registerForm.password2 }}</li>

  <li><input type="submit" value="Create Account"></li>
</form>

【问题讨论】:

    标签: python html django forms


    【解决方案1】:

    在你的csrf_token 下你需要有这个标签{{registerForm.as_p}}

    <form method='POST'>
      {% csrf_token %}
    
      {{  registerForm.as_p  }}  # `as_p` to get nicely formatted and clean form
    
      <li>{{ registerForm.first_name }}</li>
      <li>{{ registerForm.last_name }}</li>
      <li>{{ registerForm.email }}</li>
      <li>{{ registerForm.password1 }}</li>
      <li>{{ registerForm.password2 }}</li>
    
      <input type="submit" value="Create Account">
    </form>
    

    编码愉快!,如果有任何问题,请让我知道,我是你,请在下面评论解决方案,如果解决方案成功,请告诉我!

    【讨论】:

    • 我使用{{ registerForm.first_name }}是因为我想用css自定义表单
    • 我的意思是 {{ registerForm.as_p }} 会给我一个默认的 django 风格,但我不希望我的表单在 forms.py 中看起来如此,我给我的字段提供了小部件属性来自定义表单CSS 和引导程序。但问题是当我点击提交按钮时,它没有将任何内容保存到我的数据库中。
    【解决方案2】:

    尝试对您的 views.py 执行此操作

    # login and register function
    def loginAndRegister(request):
        # register form
        if request.method == 'POST':
            registerForm = RegisterForm(request.POST)
            if registerForm.is_valid():
               new_user = registerForm.save()  # Maybe You Are Saving The Entire Form?
               new_user.save()
               messages.success(request, 'Your account has created successfully! you can log in now')
               return redirect('login')
        else:
            registerForm = RegisterForm()
    
        context = {'registerForm': registerForm}
        return render(request, 'account/loginAndRegisterPage.html', context)
    

    【讨论】:

    • 还是有同样的问题
    【解决方案3】:

    它不起作用,因为我在名字和姓氏中使用了重复的名字,还因为我使用了自定义表单,它没有显示任何错误,这就是为什么我不知道表单有什么问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 2015-12-18
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多