1

I've just started my journey with django. Form is displayed on page, data typing works well, but data doesnt go to database. Form is about registation system on page.

models.py:

from django.db import models
from datetime import date

class Users(models.Model):
    login           = models.CharField(max_length=30)
    password        = models.CharField(max_length=30)
    mail            = models.CharField(max_length=40)
    create_date     = models.DateTimeField(default = date.today(), blank=True)

forms.py:

from django import forms
from .models import Users

class Register(forms.ModelForm):
    password = forms.CharField(max_length=32, min_length = 8, widget=forms.PasswordInput)
    login = forms.CharField(min_length=4, max_length=30)
    mail = forms.EmailField()
    class Meta:
        model = Users
        fields = ['login','password','mail']

register.html:

{% extends 'base.html' %}

{% block content %}
<div id="form-user">
    <form method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="SAVE" />
    </form>
</div>
{% endblock %}

views.py:

from django.shortcuts import render
from .forms import Register
from .models import Users


def register(request):
    if request.method == "POST":
        form = Register(request.POST)
        if form.is_valid():
            form.save(commit = True)
            form = Register()
    form = Register()
    return render(request, "register.html", {'form': form})

1 Answer 1

1

The problem lies in your views.py.You can try:

from django.shortcuts import render,redirect
from .forms import Register
from .models import Users


def register(request):
    if request.method == "POST":
        form = Register(request.POST)
        if form.is_valid():
            form.save(commit=False)
            form.save()
            return redirect('/') #redirect after saving
    form = Register()
    return render(request, "register.html", {'form': form})
Sign up to request clarification or add additional context in comments.

3 Comments

Ok, now at least i know whats going on. I dont see any data in db by admin panel, but python shell shows objects by Users.objects.all(). So, i guess i messed up something with settings or my db is saved somewhere else.
You should register your users model in django admin.py of your app to see the data
Correct solution, i forgot to edit admin.py. Thank you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.