ModelForm에서 데이터를 저장하는 방법은 무엇입니까?

미르코 오 리치

저는 Django를 처음 사용하기 때문에 대부분의 기본 개념을 포함하는 더미 사이트를 구축하려고합니다.하지만 양식에서 데이터를 저장하는 데 있어서는 정말 고군분투하고 있습니다.

나는 많은 비디오를 보았고 튜토리얼을 따라 모든 것이 잘 작동하지만 모두 클래스 기반 뷰와 함께 다른 방법을 사용합니다. 내가하려는 것은 Django 문서에 따라 양식에서 일부 데이터를 저장하는 것입니다.

이 단계의 프로젝트는 매우 간단합니다. 'Person'이라는 이름의 navbar 안에 드롭 다운 메뉴가있는 홈페이지입니다. 드롭 다운에서 사용자는 두 개의 링크, 즉 '사람 목록'과 '사람 만들기'를 선택할 수 있습니다.

이제 views.py에서 볼 수 있듯이 함수 기반 뷰를 사용하고 있습니다.

from django.shortcuts import render
from .models import Person
from .forms import CreatePersonForm
from django.http import HttpResponse


# Create your views here.
def home_view(request):
    return render(request, 'home.html')


def persons_list_view(request):
    persons = Person.objects.all()
    context = {
        'persons': persons
    }
    return render(request, 'persons_list.html', context)


def create_person_view(request):
    if request.method == 'POST':
        form = CreatePersonForm(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
            return HttpResponse('Working!')
    else:
        form = CreatePersonForm()
    context = {'form': form}
    return render(request, 'create_person.html', context) 

이러한 함수에서 Person 클래스의 인스턴스를 만드는 양식을 파생하고 있으므로 ModelFormforms.py에 표시된대로 클래스를 사용하고 있습니다.

from django import forms
from .models import Person


class CreatePersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = [
            'first_name',
            'last_name',
            # 'adult',
            # 'date_of_birth',
            # 'high_in_meters',
            # 'age',
            # 'email',
            # 'portrait',
            # 'number_of_cars_owned',
            # 'smartphone',
            # 'smartphone',
            # 'pets',
            # 'national_insurance_number',
            # 'balance',
        ]

그리고 내 models.py는 다음과 같이 보입니다 (대부분의 클래스 속성은 일부 유효성 검사 오류를 원하지 않기 때문에 주석 처리됩니다).

from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator


# Create your models here.
class Smartphone(models.Model):
    brand = models.CharField(max_length=20, default='Apple')
    model = models.CharField(max_length=20, default='Iphone X')


class Pet(models.Model):
    species = models.CharField(max_length=20, default='Cat')


class NationalInsuranceNumber(models.Model):
    alphanumerical_value = models.CharField(max_length=9, default='ABC15VFT')


class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=30)
    # adult = models.BooleanField(default=False)
    # date_of_birth = models.DateField(default=None)
    # created_on = models.DateTimeField(auto_now_add=True, auto_now=False)
    # updated_on = models.DateTimeField(auto_now_add=False, auto_now=True)
    # high_in_meters = models.DecimalField(max_digits=3, decimal_places=2, default=None)
    # age = models.DurationField(default=None)
    # email = models.EmailField(default='[email protected]')
    # portrait = models.ImageField(upload_to='media/', default=None, null=True, blank=True)
    # number_of_cars_owned = models.IntegerField(default=None, validators=[MinValueValidator(0), MaxValueValidator(10)])
    # smartphone = models.ForeignKey('Smartphone', on_delete=models.CASCADE, default=None, null=True, blank=True)
    # pets = models.ManyToManyField('Pet', blank=True)
    # national_insurance_number = models.OneToOneField('NationalInsuranceNumber',
    #                                                  on_delete=models.CASCADE,
    #                                                  default=None,
    #                                                  null=True, blank=True)
    # balance = models.IntegerField(default=None)

    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)

마지막으로 잘 작동하는 내 create_person.html 템플릿이 있습니다.

{% extends 'base.html' %}}

{% block content %}
<div class="jumbotron jumbotron-fluid mt-4 ">
    <div class="container">
        <h1 class="display ml-5 -4 mt-4 " align="center">Create Person</h1>
        <div class="container mt-3 mb-3">
            <div class="mt-5 ml-5">
                <form action="/person/persons-list/" method="post">{% csrf_token %}
                    {{ form.as_p }}
                    <input type="submit" value="Create Person">
                </form>
            </div>
        </div>
    </div>
</div>
{% endblock %}

누구든지 실제로 데이터를 저장하는 양식을 만들기 위해 이것을 수정하는 방법을 알고 있습니까? 나는 가능하다면 기능 기반 뷰와 모델 양식을 고수하고 그 기반에서 얼굴 양식을 사용하고 싶습니다. 양식 및 클래스 기반보기.

이것은 서버를 실행할 때 터미널에서 얻는 것입니다.

  1. 홈페이지 드롭 다운 목록에서 사람 만들기를 클릭합니다.
  2. 'John'및 'Smith'값으로 양식 채우기
  3. '사람 만들기'버튼을 클릭합니다.

원하는대로 사람 목록 페이지로 이동하지만 사람이 생성되어 목록에 표시되지 않습니다. (관리자 페이지로 사람을 만들면 목록 페이지가 제대로 작동합니다)

System check identified no issues (0 silenced).
November 29, 2019 - 08:25:39
Django version 2.2.7, using settings 'my_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[29/Nov/2019 08:25:40] "GET / HTTP/1.1" 200 2703
[29/Nov/2019 08:25:48] "GET /person/create-person/ HTTP/1.1" 200 3145
[29/Nov/2019 08:25:53] "POST /person/persons-list/ HTTP/1.1" 200 2581

감사합니다

러 드라

양식 작업에서 작성했기 때문에 양식 action="/person/persons-list/"을 제출할 때보기를 누르지 /person/persons-list/않습니다 create_person_view. 따라서 action="/person/create/"(또는 사람이보기를 만드는 URL)로 변경하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이 데이터를 cakePHP에 저장하는 방법은 무엇입니까?

분류에서Dev

이 데이터를 쿠키에 저장하는 방법은 무엇입니까?

분류에서Dev

Laravel에 양식 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Rails : 세션에 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

NSDate를 코어 데이터에 저장하는 방법은 무엇입니까?

분류에서Dev

AngularJS로 localStorage에 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

json 데이터를 mysql에 저장하는 방법은 무엇입니까?

분류에서Dev

phpmyadmin 데이터베이스에서 pdf로 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Google 데이터 저장소에서 데이터를 검색하는 방법은 무엇입니까?

분류에서Dev

많은 열이있는 MySQLi에 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Django에서 양식의 임시 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

JHipster에서 초기 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

많은 양의 데이터를 어레이에 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Portia, 데이터베이스에 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Kotlin 비동기 클로저에서 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

앱 데이터를 저장하고 앱에로드하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

Elasticsearch에서 검색 할 데이터를 저장하는 권장 방법은 무엇입니까?

분류에서Dev

Elasticsearch에서 검색 할 데이터를 저장하는 권장 방법은 무엇입니까?

분류에서Dev

Android에서 데이터를 저장하는 가장 적합한 방법은 무엇입니까?

분류에서Dev

Laravel에서 이미지 경로를 데이터베이스에 저장하는 방법은 무엇입니까?

분류에서Dev

Mathematica에서 재무 데이터를 파일에 저장하는 방법은 무엇입니까?

분류에서Dev

c #에서 restsharper를 사용하여 각 JSON 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Java를 사용하여 Spark Streaming에서 Cassandra로 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

Python에 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

VSTO 추가 기능에 일부 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

다른 목록에 대한 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

ViewModel Android에서 페이지 매김 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

애플리케이션 내에서 데이터를 저장하는 방법은 무엇입니까?

분류에서Dev

MATLAB에서 대용량 데이터 세트를 생성하고 저장하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    이 데이터를 cakePHP에 저장하는 방법은 무엇입니까?

  2. 2

    이 데이터를 쿠키에 저장하는 방법은 무엇입니까?

  3. 3

    Laravel에 양식 데이터를 저장하는 방법은 무엇입니까?

  4. 4

    Rails : 세션에 데이터를 저장하는 방법은 무엇입니까?

  5. 5

    NSDate를 코어 데이터에 저장하는 방법은 무엇입니까?

  6. 6

    AngularJS로 localStorage에 데이터를 저장하는 방법은 무엇입니까?

  7. 7

    json 데이터를 mysql에 저장하는 방법은 무엇입니까?

  8. 8

    phpmyadmin 데이터베이스에서 pdf로 데이터를 저장하는 방법은 무엇입니까?

  9. 9

    Google 데이터 저장소에서 데이터를 검색하는 방법은 무엇입니까?

  10. 10

    많은 열이있는 MySQLi에 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  11. 11

    Django에서 양식의 임시 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  12. 12

    JHipster에서 초기 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  13. 13

    많은 양의 데이터를 어레이에 저장하는 가장 좋은 방법은 무엇입니까?

  14. 14

    Portia, 데이터베이스에 데이터를 저장하는 방법은 무엇입니까?

  15. 15

    Kotlin 비동기 클로저에서 데이터를 저장하는 방법은 무엇입니까?

  16. 16

    앱 데이터를 저장하고 앱에로드하는 가장 좋은 방법은 무엇입니까?

  17. 17

    Elasticsearch에서 검색 할 데이터를 저장하는 권장 방법은 무엇입니까?

  18. 18

    Elasticsearch에서 검색 할 데이터를 저장하는 권장 방법은 무엇입니까?

  19. 19

    Android에서 데이터를 저장하는 가장 적합한 방법은 무엇입니까?

  20. 20

    Laravel에서 이미지 경로를 데이터베이스에 저장하는 방법은 무엇입니까?

  21. 21

    Mathematica에서 재무 데이터를 파일에 저장하는 방법은 무엇입니까?

  22. 22

    c #에서 restsharper를 사용하여 각 JSON 데이터를 저장하는 방법은 무엇입니까?

  23. 23

    Java를 사용하여 Spark Streaming에서 Cassandra로 데이터를 저장하는 방법은 무엇입니까?

  24. 24

    Python에 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  25. 25

    VSTO 추가 기능에 일부 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  26. 26

    다른 목록에 대한 데이터를 저장하는 가장 좋은 방법은 무엇입니까?

  27. 27

    ViewModel Android에서 페이지 매김 데이터를 저장하는 방법은 무엇입니까?

  28. 28

    애플리케이션 내에서 데이터를 저장하는 방법은 무엇입니까?

  29. 29

    MATLAB에서 대용량 데이터 세트를 생성하고 저장하는 방법은 무엇입니까?

뜨겁다태그

보관