django学習——ModelForm
ModelForm ModelForm簡単な紹介 ModelFormの使用 ModelFormの簡単な紹介
ModelFormとは、ModelをFormにバインドし、Formはフォームを自動的に生成する役割を果たし、Modelにはデータベース・テーブルのすべてのデータ・フィールドが含まれています.Formのみを使用する場合は、各formフィールドを定義し、ModelとFormを組み合わせると、Model Formには次の機能があります. Formのすべての機能 Modelフィールドをformフィールド に自動的に変換
ModelFormの使用1、forms.pyファイルにArticleFormクラス継承 を作成する2、models.pyファイルにArticleモデル を作成する3、views.pyファイルにビュークラスを定義し、getメソッドとpostメソッド を作成します.4、urls.pyファイルにマッピングされたルーティング 5、htmlテンプレートファイル を作成する.
ModelFormとは、ModelをFormにバインドし、Formはフォームを自動的に生成する役割を果たし、Modelにはデータベース・テーブルのすべてのデータ・フィールドが含まれています.Formのみを使用する場合は、各formフィールドを定義し、ModelとFormを組み合わせると、Model Formには次の機能があります.
ModelFormの使用
forms.ModelForm
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = "__all__" # , __all__,
exclude = None #
#
labels = {
'title': ' ',
'content': ' ',
'author': ' ',
}
help_texts = None #
#
widgets = None
from django.forms import widgets as wid
# widgets = {
# 'content': wid.Textarea()
# }
#
error_messages = {
'title': {
'required': ' '},
'content': {
'required': ' '},
'author': {
'required': ' '}
}
def get_errors(self):
errors = self.errors.get_json_data()
new_errors = {
}
for key, message_dicts in errors.items():
messages = []
for message in message_dicts:
messages.append(message['message'])
new_errors[key] = messages
return new_errors
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=20)
content = models.TextField()
author = models.CharField(max_length=10)
create_time = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'article'
from django.shortcuts import render
from django.views import View
from .forms import ArticleForm
class ArticleView(View):
def get(self, request):
form = ArticleForm()
return render(request, 'article.html', {
'form': form, 'result': ''})
def post(self, request):
form = ArticleForm(request.POST)
if form.is_valid():
title = form.cleaned_data.get('title')
content = form.cleaned_data.get('content')
author = form.cleaned_data.get('author')
print(title, content, author)
#
form.save()
# save() commit=False,
# article = form.save(commit=False)
# article.title = ' ( )'
# article.save()
return render(request, 'article.html', {
'form': form, 'result': 'submit success'})
else:
form = ArticleForm(request.POST)
print(form.get_errors())
return render(request, 'article.html', {
'form': form, 'result': 'submit failed'})
from django.urls import path
from . import views
urlpatterns = [
path('article/', views.ArticleView.as_view(), name='article')
]
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<form action="" method="POST">
<table>
{
{ form.as_table }}
<tr>
<td>td>
<td><input type="submit" value=" ">td>
tr>
table>
form>
{
{ result }}
body>
html>