Я не могу просмотреть свои данные формы в базе данных django - PullRequest
1 голос
/ 07 мая 2020

Я учусь в django. Я создал свою первую форму, но когда я ввожу данные, я не вижу их в своей базе данных, но вижу их в своей оболочке. Я перепроверил свой код, но он кажется нормальным, но все же он не сохраняется в моем коде в базе данных. Пожалуйста, помогите мне здесь. Спасибо.

Модель:

from django.db import models

class Login(models.Model):
    first_name = models.CharField(max_length=200)
    second_name = models.CharField(max_length=200)
    email = models.EmailField()
    password = models.CharField(max_length=200)

Просмотр:

from django.http import HttpResponse
from django.shortcuts import render
from .models import Login
from .forms import login_form

def homeview(request):
    return HttpResponse("<h1>Hello There</h1>")

def login_view(request):
    form = login_form(request.POST or None)

    if form.is_valid:
        form.save
    context = {
        "form":form
    }   

    return render(request, "login.html", context)

Шаблон:

{% block content %}

<form action="" method="GET">{% csrf_token %}

{{form.as_p}}
<input type="submit" value="Login"/> 
</form>

{% endblock %}

Форма:

from django import forms
from .models import Login

class login_form(forms.ModelForm):
    class Meta:
        model = Login
        fields = [
            "first_name",
            "second_name",
            "email",
            "password"
        ]

1 Ответ

4 голосов
/ 07 мая 2020

Следующие строки неверны:

    if form.is_valid:
        form.save

В настоящее время if всегда будет возвращать True, потому что .is_valid возвращает связанный метод.

Вам нужно вызвать is_valid -> form.is_valid()

То же для form.save. Вы бы только вернули связанный метод save, но не вызываете его.

Эти строки будут выглядеть так:

    if form.is_valid():
        form.save()

Кроме того: в вашем шаблоне используется method для вашей формы - GET, но вы получаете доступ к request.POST. Вам нужно изменить любой из них на другой метод, например method="POST".

...