已更新UserCreationForm,现在无法注册

2024-06-17 12:21:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Django中更改用户注册表单的语言,并创建了自己的表单,但现在当我尝试注册一个随机的人时,我得到了

http://127.0.0.1:8180/register/submit错误

forms.py

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['email']


class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['image']


class ContactForm(forms.Form):
    Isim = forms.CharField(max_length=100)
    Email = forms.EmailField()
    Mesaj = forms.CharField(widget=forms.Textarea)


class CustomUserCreationForm(forms.ModelForm):
    error_messages = {
        'password_mismatch': _("Şifreler aynı değil"),
    }
    email = forms.EmailField(label="E-Posta Adresi")
    password1 = forms.CharField(label=_("Şifre"),
        widget=forms.PasswordInput)
    password2 = forms.CharField(label=_("Tekrar şifre"),
        widget=forms.PasswordInput,
        help_text=_("Lütfen aynı şifreyi girin"))

    class Meta:
        model = User
        fields = ['email', 'password1', 'password2']

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1")
        password2 = self.cleaned_data.get("password2")
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError(
                self.error_messages['password_mismatch'],
                code='password_mismatch',
            )
        return password2

    def clean_email(self):
        if User.objects.filter(email=self.cleaned_data['email']).exists():
            raise forms.ValidationError("Vermiş olduğunuz mail adresiyle bir kayıt bulunmaktadır.")
        return self.cleaned_data['email']

    def save(self, commit=True):
        user = super(CustomUserCreationForm, self).save(commit=False)
        user.set_password(self.cleaned_data["password1"])
        if commit:
            user.save()
        return user

views.py

def register(request):
    if request.method == 'POST':
        form = CustomUserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            email = form.cleaned_data.get('email')
            messages.success(request, f'{email} adına hesap oluşturulmuştur! Giriş yapabilirsiniz!')
            return redirect('login')
    else:
        form = CustomUserCreationForm()
    context = {
        "footer": Footer.objects.filter(name="Generic").first(),
        'form': form
    }
    return render(request, 'member/register.html', context)

网址。派克


from django.urls import path, include
from . import views
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.contrib.auth.decorators import login_required




urlpatterns = [
    path('', views.home, name='member-home'),
    path('register/', views.register, name='member-register'),
    path('giris/', auth_views.LoginView.as_view(template_name='member/login.html'), name = 'login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='member/logout.html'), name = 'logout'),
    path('forgot-password/', auth_views.PasswordResetView.as_view(template_name='member/forgot-password.html'), name = 'member-forgot-password'),
    path('profile/', views.profile, name = 'profile'),
    path('accounts/login/', auth_views.LoginView.as_view(template_name='member/login.html')),
    path('groups/', views.groups, name='member-group'),
    path('groups/<slug:slug>/', views.groups_detail, name='member-group-detail'),
    path('p/<slug:slug>/', views.custom_page, name='custom-page'),
    # path('', views.contact_us, name='member-contact-us'),
    # path('contact-us/', views.contact_us, name='member-contact-us'),
    path('api/', views.apiOverview, name='api-overview'),
    path('sikca-sorulan-sorular/', views.faq, name = 'member-faq'),
    path('uyelik-sozlesmesi/', views.terms, name = 'member-terms'),
    path('not-found/', views.not_found, name = 'member-not-found'),
    path('djrichtextfield/', include('djrichtextfield.urls')),

]

register.html


<!DOCTYPE html>
{% load static %}
{% load crispy_forms_tags %}
<html lang="en">

<head>
    <title>Kayıt Ol</title>
    {% include '../partials/meta.html' %}
</head>

<body data-spy="scroll" data-target=".site-navbar-target" data-offset="300">
  <div class="site-wrap">
    {% include '../partials/header.html' with regular=True %}
      <div class="full-bg" style="" data-aos="fade" data-stellar-background-ratio="0.5" id="anasayfa">
      <div class="container">
        <div class="row align-items-center text-center justify-content-center">
          <div class="col-md-6">
            <div class="card-trans text-primary" style="position:relative; top=15px;">
                <form action="submit" method="post">
                    {% csrf_token %}
                    <fieldset class="form-group">
                        <div class="h1 mb-4">Kayıt Ol</div>
                        <div class="form text-left">
                            {{form|crispy}}
                        </div>
                    </fieldset>
                <div class="row align-items-center text-center justify-content-center">
                  <div class="col-md-6 form-group">
                    <input type="submit" value="Register" class="btn btn-primary w-100">
                  </div>
                </div>
                <div class="row align-items-center text-center justify-content-center">
                  <div class="col-md-12 form-group">
                    <small><a href="/giris">Giriş Yap</a></small>
                    <br>
                    <br>
                    <span>
                      Üyelik oluşturduğunuzda<a href="/terms">üyelik sözleşmesini</a> okuduğunuzu ve kabul ettiğinizi onaylıyorsunuz.
                    </span>
                  </div>
                </div>
              </form>
            </div>
          </div>
        </div>
      </div>
    </div>
      



      {% include '../partials/footer.html' %}
  </div>
</body>
</html>

还有,关于如何更改按钮语言的提示? 谢谢大家 奥努尔


Tags: pathnameselfdivformregisterdataemail