フロントエンドでのセレクタの指定とバックエンドでセレクタとして受け取るものは違う

 

CSS、JSで受け取れるもの

HTMLで記述されてたクラス名とID名を使える

 

バックエンドで受け取れるもの

name属性の値のみ受け取れるので、サーバーサイドで使用したいときはname属性の値を使用する。クラス名とID名はバックエンドには渡せない。

 


解説
HTMLフォームで入力されたデータにサーバーサイドからアクセスする際には、`<input>`タグ(またはその他のフォーム要素)の`name`属性を使います。

HTMLの`class`や`id`属性は、主にCSSスタイリングやJavaScriptでの要素の選択に使用されるものであり、サーバーサイドの処理では直接的には使用されません。

サーバーサイドでフォームデータにアクセスする際には、リクエストオブジェクトの`.POST`(または`.GET`)ディクショナリを使用して、特定の`name`属性に対応する値を取得します。


実例
html
<input type="text" name="update_begin_date" value="2024-04-01" placeholder="yyyy-mm-dd" class="form-control is-valid" title="" id="id_update_begin_date">

サーバーサイド(Djangoビュー)でこの入力値にアクセスしたい場合は、以下のようにします:

python
update_begin_date = self.request.POST.get('update_begin_date', None)

フォームがPOSTメソッドで送信された場合に`update_begin_date`フィールドの値を取得できます。`get`メソッドの第二引数である`None`は、もし`update_begin_date`が存在しない場合に返されるデフォルト値です。

したがって、サーバーサイドで特定のフォームフィールドの値を取得または検証する必要がある場合、そのフィールドの`name`属性に対応する値をチェックすることが正しいアプローチです。