1. ホーム
  2. Web制作
  3. html5

AmazeUIのJSフォーム検証フレームワークの動作を公開

2022-01-11 02:53:50

1. 必要条件

UTribe(Androidアプリ)に組み込まれた学生連合活動登録システムのフロントエンドページを作る。登録者は最低1人、最高4人で、チーム名は必須、キャプテンの情報は全て必須、選手のQQと携帯電話番号は任意、参加時間は必須で、フォームには最大4つの動的追加が可能であること。

2、予備設計

今回のプロジェクトは半日しかなく、Android側でページのデバッグをした経験もなく、レイアウトのデバッグをする機会もないので、一度デプロイして動作を確認するくらいしかできません。

3、問題点

私は白、フォームの検証を行う前に、パラメータをチェックするためにjsを使用して送信されますが、より多くのパラメータで、このプロジェクト、およびチェックするさまざまな方法の同じフィールド(キャプテンQQ、携帯電話が必要とチームメンバーは使用しません)、作業負荷が明らかに以前の方法で大きい場合、それを行うには良い方法はないですか?今回、jsの検証フレームワークのamazeUIを見たが、相互作用が良い。

使い方を研究した上で

まず対象のフォームをバリデータ関数にバインドし、検証が必要なフィールドに属性(required, pattern, mixlengthなど)を追加し、patternはHTML5に既存のemailやurlなどの正規表現に加えてカスタマイズでき、最後に操作後のフォーム情報が正規であるかを判断するためにsubmit関数に入力します。次に、このフレームワークを自分のプロジェクトに適用し、カスタム正規表現を追加してみました。

ここでは、チームメンバーが追加する必要はありませんが、検証を追加するには、キャプテンのQQ、携帯電話番号などの需要に応じて、対応するフィールドに検証を追加することができます。

mkvirtualenv django_tmall
workon django_tmall
# git clone way to download
git clone [email protected]:sshwsfc/django-xadmin

# Unpack and go to the directory
# Install the required packages
pip install -r requirements.txt

質問1.

これはどういうことでしょうか?インタープリタがあなたのValidatorメソッドを認識していないことがわかりました。あるjsの参照が欠けているので、それを修正します。

質問2.

チームメンバーフォームの情報はキャプテンとよく似ているので、でも一人ずつアペンドするわけにはいきませんよね?これは2つの問題が発生します、第一は多くの作業であり、第二は、トラブルのメンテナンスは、単純なコードではありませんので、私は方法を解決するために書かれたdivテンプレートをクローンすることを考えた。

問題点3.

チームメンバーごとのデータをjson配列に統合してバックエンドに渡したいので、リクエストパラメータを確認したところ、キャプテンだけ性別属性があり、チームメンバーにはないことがわかり、後でラジオは名前の値が1つしかないからだとわかり、チームメンバーごとの性別の違いを実現するには、クローンテンプレートでチームメンバーのフォームのラジオの名前属性を動的に変更しなければなりません。選手ごとの違い

django~=1.9.0 django-crispy-forms~=1.6.0 django-reversion~=2.0.0 django-formtools==1.0 future==0.15.2 httplib2==0.9.2 six==1.10.0

すると、異なるチームメンバーの性別属性をきちんと受け取れるようになります。

課題4 :

submitメソッドを上書きしてフォームを送信した後、基本的には完了したと思っていたのですが、テストしてみると、フォームフィールドが不正な場合、ページが自動的に更新され、メッセージが点滅して消え、記入したデータも消えてしまい、明らかにロジック通りになっていないことが判明しました。後でわかったことですが、この問題は

Database name: django_tmall
Create a user for this project, username: djangotmall
User password: djangotmall321
Permissions: this user has all permissions to the django_tmall database

ここでボタンの種類は、ボタンの代わりに送信されることに注意してください、送信は自動的に送信後にページを更新します、解決策は、パラメータをチェックするバリデータオブジェクトの送信関数では、単純ですが、合法ではない場合は、ページが自動的に更新されないように、falseを返します。

import sys

os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Add apps and extra_apps to Django's path

sys.path.insert(0, os.path.join(BASE_DIR,'apps'))
sys.path.insert(0, os.path.join(BASE_DIR,'extra_apps'))


# Add xadmin to INSTALLED_APPS

INSTALLED_APPS = [
    ......
    'xadmin',
    'crispy_forms',
    'reversion',
]


# Will change the database configuration to mysql

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "django_tmall",
        'USER': 'djangotmall',
        'PASSWORD': "djangotmall321",
        'HOST': "127.0.0.1"
    }
}


# System language configuration, change to Chinese

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'


# Add resource path

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

完成した効果は次のとおりです。

画像

甘酒バリデーションの落とし穴

pip install pymysql

このAmazeUIのJSフォーム検証フレームワークに関する記事は、ここで共有された実例です。AmazeUIのJSフォーム検証コンテンツにもっと関連するものは、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも、スクリプトハウスをもっと支持してくださいね