Python
 Computer >> コンピューター >  >> プログラミング >> Python

Djangoのフォームウィジェット


この記事では、Djangoフォームでウィジェットを使用する方法を説明します。ウィジェットは、フロントエンドを改善するのに非常に役立ちます。ウィジェットは、Djangoフォーム、テキストエリア、入力、パスワード入力などからレンダリングされるhtml要素であり、すべてウィジェットです。

まず、Djangoプロジェクトとアプリを作成しましょう。 "tutorial14"という名前でプロジェクトを作成しました "djangoFormWidget"という名前のアプリ 。

settings.pyにアプリを追加します プロジェクトのurls.py。にアプリのURLを含めます

テンプレート、 home.html、forms.pyなどのすべての基本的なファイルとフォルダを作成します。

アプリのurls.py

from django.urls import path,include
from . import views
urlpatterns = [
   path('',views.home,name="home")
]

ビューをレンダリングするための基本的なURLを作成します。

views.py内 −

from django.shortcuts import render
from .forms import CommentForm

# Create your views here.
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def home(request):
   if request.method=='POST':
      form=CommentForm(request.POST)
      if form.is_valid():
         form.save()
   commentform=CommentForm()
   return render(request,'home.html',{"commentform":commentform})

ここでは、フォームをインポートして、POSTリクエストとGETリクエストを処理しました。

POSTではデータを保存し、GETではフォームをフロントエンドに送信します。

models.py内 −

from django.db import models

# Create your models here.
class CommentModel(models.Model):
   comment=models.CharField(max_length=500)

ここでは、フォームで使用するモデルを作成しました。フォームを使用するには、このモデルが必要です。

home.html内 −

<!DOCTYPE html>
<html>
   <head>
      <title>TUT</title>
   </head>
   <body>
      {% for fm in commentform %}
      <form method="post">
         {%csrf_token%}

         {{fm.errors}}<br>
         {{fm.label}}:{{fm}}<br>
         {%endfor%}
            <button type="submit">Submit</button>
      </form>
   </body>
</html>

フォームをレンダリングするシンプルなフロントエンドです。

forms.py内 −

from django import forms
from .models import CommentModel
class CommentForm(forms.Form):
   comment=forms.CharField(widget=forms.Textarea(attrs={'class':'comment','title':'add comment'})) # this is the line which is used for widget, here I added TextArea widget you can see we also assigned class to widget using attrs attribute.

def save(self):
   data=self.data
   modelRef=CommentModel(comment=data['comment'])
   modelRef.save()

それは私たちが私たちの形を作るところです。組み込みのDjangoフォームウィジェットを使用して、フォームにテキストエリアをレンダリングしました。

出力

Djangoのフォームウィジェット


  1. Python-KivyのBoxLayoutウィジェット

    Kivyは、マルチタッチアプリなどの革新的なユーザーインターフェイスを利用するアプリケーションを迅速に開発するためのオープンソースのPythonライブラリです。これは、Androidアプリケーションとデスクトップアプリケーションの開発に使用されます。この記事では、BoxLayoutウィジェットを使用してさまざまな方向と色のボタンを作成する方法を説明します。 以下のコードでは、最初に、向きが垂直である外側のボックスを作成します。次に、水平方向の行1を作成します。次に、他の2つの行を再び垂直方向に配置します。これらすべての行を外側のボックスにラップし、途中で作成するボタンウィジェットに異なるテキ

  2. PythonTkinterのプログレスバーウィジェット

    プログレスバーは、特定のタスクの進行状況を表示するために使用される一般的なGUI要素です。この記事では、PythontkinterGUIライブラリを使用してプログレスバーを作成する方法を説明します。 以下のプログラムでは、tkinter.ttkモジュールのプログレスバーサブモジュールをインポートしました。次に、スタイルオブジェクトを使用してスタイルオプションを作成し、ボタンの長さの値と進行状況の値を指定します。 例 import tkinter as tk from tkinter.ttk import Progressbar from tkinter import ttk canv = t