May be you can try the below in-built django feature for the registration form 
creation:
from django.contrib.auth.forms import UserCreationFormdef 
register_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data['username']
            password = form.cleaned_data['password1']
            user = authenticate(request, username=username, password=password)
            login(request, user)
            messages.success(request, 'registration successfull....')
            return redirect('home')
    else:
        form = UserCreationForm()
    context = {'form': form}
    return render(request, 'authenticate/register.html', context)register.html
{% extends 'authenticate/base.html' %}
{% block content %}
    <h2>Registration</h2>

    <form method="POST" action="{% url 'register' %}">
    {%  csrf_token %}
        {% if form.errors %}
        <p>Your form has errors, please fix</p>
        {%  endif %}

    {{ form }}
    <input type="submit" value="Register" class="btn btn-secondary">
    </form>
{% endblock %}I think this should work like charm


Regards,
Amitesh Sahay 

    On Wednesday, 28 August, 2019, 11:52:58 am IST, Tosin Ayoola 
<[email protected]> wrote:  
 
 You  didn't close the form tag that why you getting this error 
On Aug 27, 2019 21:41, "K. KOFFI" <[email protected]> wrote:

please put « > » before the csrf tag

Le 27 août 2019 à 16:30 +0100, Kean <[email protected]>, a écrit :

Hi Ajeet, thanks for code, however after i press submit i get the

Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:    CSRF token missing or incorrect.
    In general, this can occur when there is a genuine Cross Site Request 
Forgery, or when Django's CSRF mechanism has not been used correctly. For POST 
forms, you need to ensure:   
   - Your browser is accepting cookies.
   - The view function passes a request to the template's render method.
   - In the template, there is a {% csrf_token %} template tag inside each POST 
form that targets an internal URL.
   - If you are not using CsrfViewMiddleware, then you must use csrf_protect on 
any views that use the csrf_token template tag, as well as those that accept 
the POST data.
   - The form has a valid CSRF token. After logging in in another browser tab 
or hitting the back button after a login, you may need to reload the page with 
the form, because the token is rotated after a login.
You're seeing the help section of this page because you have DEBUG = True in 
your Django settings file. Change that to False, and only the initial error 
message will be displayed.You can customize this page using the 
CSRF_FAILURE_VIEW setting.
my template is referencing csrf_token
template.html
<!DOCTYPE html><html><head> <title>Customer</title></head><body> <h8> "Customer 
register" </h8> <div> <div class = "container" > <form method=« POST"> {% 
csrf_token %} {{ form.as_p }} <input type="submit" /> </form> </div> </div> 
</body></html>

Am i doing something wrong?
Best,K
On 25 Aug 2019, at 08:57, Ajeet Kumar Gupt <[email protected]> wrote:

Hi, 
Please use the below code.

views.py__________________
def user_register(request):
    # if this is a POST request we need to process the form data
    template = 'mymodule/register.html'
   # template = 'index.html'
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = RegisterForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            if User.objects.filter(username= form.cleaned_data['username']) 
.exists():
                return render(request, template, {
                    'form': form,
                    'error_message': 'Username already exists.'
                })
            elif User.objects.filter(email= form.cleaned_data['email']). 
exists():
                return render(request, template, {
                    'form': form,
                    'error_message': 'Email already exists.'
                })
            elif form.cleaned_data['password'] != form.cleaned_data['password_ 
repeat']:
                return render(request, template, {
                    'form': form,
                    'error_message': 'Passwords do not match.'
                })
            else:
                # Create the user:
                user = User.objects.create_user(
                    form.cleaned_data['username'],
                    form.cleaned_data['email'],
                    form.cleaned_data['password']
                )
                user.first_name = form.cleaned_data['first_name' ]
                user.last_name = form.cleaned_data['last_name']
                user.phone_number = form.cleaned_data['phone_ number']
                user.save()
                return redirect('/login/')
                # Login the user
                #login(request, user)
                #def user_login(request):
                # redirect to accounts page:
                #return render(request, '/login.html')
               # return HttpResponseRedirect(return, '/login.html')
               # No post data availabe, let's just show the page.
    else:
        form = RegisterForm()
        return render(request, template, {'form': form})
On Sat, Aug 24, 2019 at 8:34 PM Kean <[email protected]> wrote:

Hi,
New to Django.I've created a user registration form, the issue is it does not 
run validations or report errors with the data entered. It simply routes to the 
redirect url.Please can I ensure the user sees the correct error in a post case 
scenari for both a django form, and customsied django form.
forms.py
class UserRegisterForm( UserCreationForm):    email = forms.EmailField()
    class Meta:        model = User        fields = 'username', 'email', 
'password1', 'password2'
Views.py
def register(request):    if request.method == 'POST':        form = 
UserRegisterForm(request.POST)        if form.is_valid():            
form.save()            username = form.cleaned_data.get(' username')            
messages.success(request, f'Account created for {username}')        return 
HttpResponseRedirect(' cprofile')    else:        form = UserRegisterForm()    
context = {'form': form}    return render(request, "register.html", context,)
template.html
 <head> <title>Registration</title> </head> <body> <br> <div class = 
"container"> <form method = "POST"> {% csrf_token %} <fieldset class="form"> 
<legend class="border-bottom mb-2">Register</legend> {{ form|crispy }} {% if 
messages %} {% for messages in messages %} <div class="alert alert{{ 
message.tag }}"> {{ messages }} </div> {% endfor %} {% endif %} </fieldset> 
<br> <div class = "form"> <button class ="btn btn-outline-info" 
type="submit">Register</ button>
Any help would be much appreciated
Best,
K


--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscribe@ googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/ 
msgid/django-users/5a003506- de8d-4587-863d-3fc26e4c45c1% 40googlegroups.com.



--






Thanks & Regards
Ajeet Kumar Gupt
+91-9311232332




--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscribe@ googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/ 
msgid/django-users/EE7F02B6- E358-4378-AD6C-255123EEE33B% 40gmail.com.



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscribe@ googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/ 
msgid/django-users/a01e8d1e- 7c99-4c26-a569-4ccd08daa12f% 40Spark.



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAHLKn73wbZZiGubpZprphQt-ogdKVk-MKeabD4n3c5-8hDJhJg%40mail.gmail.com.
  

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/249289521.2613390.1566979913978%40mail.yahoo.com.

Reply via email to