Gnanavel pandian
Gnanavel pandian

Reputation: 83

I created registration form through django forms.But its not rendring?

I am trying to create blog app with django.I created registration form with django forms.In official django documentation for get request the code is form.classname().I also coded in that way.But its returning register() missing 1 required positional argument: 'request'?

 from django import forms

 class register(forms.Form):
   Email = forms.EmailField(required=True)
   Username = forms.CharField(label='Username', 
                                             max_length=100,required=True)
   Password = forms.CharField(widget=forms.PasswordInput(),required=True)
   Confirm_Password = 
               forms.CharField(widget=forms.PasswordInput(),required=True)
 views.py

 def register(request):
     if request.method == "POST":
         form = register(request.POST)
         email = form.cleaned_data['email']
         User_name=form.cleaned_data['User_name']
         Password1=form.cleaned_data['Password1']
         Password2=form.cleaned_data['Password2']
         if form.is_valid():
             if User.objects.filter(username=User_name).exists():
                 messages.info(request,'Username Taken')
                 return redirect('register')
             elif User.objects.filter(email=email).exists():
                 messages.info(request,'Email Taken')
                 return redirect('register')
             else:
                user = User.objects.create_user(username=User_name,
                                        password=Password1,email=email)
                user.save();
                return redirect('/')
         else:
             messages.info(request,'Password Not Matching')
     else:
         form = register()
         return render(request,'register.html',{'form': form})

   models.py

   from django.db import models
   from django.conf import settings

   # Create your models here.
   class Post(models.Model):
       title=models.CharField(max_length=100)
       desc=models.TextField()
       date=models.DateField(auto_now=True)
       author=models.ForeignKey(settings.AUTH_USER_MODEL, 
                           to_field="username",on_delete=models.CASCADE)

Showing error:register() missing 1 required positional argument: 'request'

Upvotes: 0

Views: 85

Answers (1)

Mikey
Mikey

Reputation: 450

The problem is that your form name is the same as view name. Change name of form to something different.

I also noticed other mistakes:

  • before accessing specific form fields you have to check its validity:
if form.is_valid():
    field1 = form.cleaned_data["field1"]
  • Your form field names don't match with retrieving data using form.cleaned_data["someFieldName"]

Upvotes: 1

Related Questions