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})
3
  • 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.
    – bartnyk
    Commented Aug 23, 2020 at 23:40
  • You should register your users model in django admin.py of your app to see the data
    – Kennoh
    Commented Aug 24, 2020 at 6:33
  • Correct solution, i forgot to edit admin.py. Thank you.
    – bartnyk
    Commented Aug 24, 2020 at 8:34

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.