アンチパターン
【Django】カスタムテンプレートタグを実装させずにページネーションと検索を両立させる【Paginator】
【Django】views.pyでユーザーモデルを扱う時は get_user_model を使う
JavaScriptのイベントリスナのアロー関数でthisは使わない【event.currentTargetを使おう】
- 作成日時:
- 最終更新日時:
- Categories: フロントサイド
- Tags: JavaScript jQuery アンチパターン tips
モダンなJavaScriptに慣れるため、無名関数を書くときにもアロー関数を使い、そしてthisを使おうとすると、意図したとおりにはならない。 アロー関数式とfunction関数ではthisの仕様が異なるからだ。下記ソースコードを元に動作を確かめよう。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hello World test!!</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <button class="button" value="1">ボタン1</button> <button class="button" value=" ...【Django】OneToOneFieldでつながっているデータの取得方法【モデル名を小文字にした属性名で取得できる】
OneToOneFieldを使う機会は限定されているので、備忘録として。 タイトルから既に(?)な状態かも知れないが、まずは、下記モデルを見てもらいたい。 # 店舗データテーブル class StoreData(models.Model): class Meta: constraints = [ models.UniqueConstraint(fields=["store","date"], name="unique_store_date"), ] store = models.ForeignKey(Store,verbose_name="店舗",on_delete=models.CASCADE) date = models.DateField(verbos ...【React】グローバルなStateを使って、Propsバケツリレー問題を解決する
- 作成日時:
- 最終更新日時:
- Categories: フロントサイド
- Tags: react JavaScript アンチパターン
jQueryのオブジェクトをfor~of文でループするとJavaScriptになる問題の対処
- 作成日時:
- 最終更新日時:
- Categories: フロントサイド
- Tags: JavaScript jQuery tips アンチパターン
for~of文を使ってjQueryのオブジェクトをループすると、JavaScriptのオブジェクトになる。 その対策をまとめておく。 jQueryループ時の問題 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Hello World test!!</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <div class="test">1</div> <div class="test">2</div> <div class="test">3</div> <div class="test">4</div> <script> let elems = $(".test"); //この時点ではjQueryのオブジェクトになっている。 console.log(elems); for (let elem of elems){ //for of文で取り出すと、JavaScriptのオブジェクトになっている。 console.log(elem); //jQueryのオブジェクトだと思ってjQ ...【JavaScript】.replace()で検索した文字列すべてを置換したい場合は正規表現を使う
- 作成日時:
- 最終更新日時:
- Categories: フロントサイド
- Tags: JavaScript アンチパターン tips
例えば、以下の文字列の,を に書き換えたいとする。 let data = "aaa,bbb,ccc"; 文字列の置換処理は.replace()で実現できるから、こうすれば良いと思いがちだが実は違う。 console.log(data.replace(","," ")); // aaa bbb,ccc デフォルトでは最初にヒットした文字列しか置換してくれない。検索した文字列を全て置換したい場合、このようにする。 console.log(data.replace( /,/g , " ")); // aaa bbb ccc ちなみにPythonでは.replace()を使うと全て置換してくれる。だから、Pythonでreplaceを使 ...【Django】複数のアプリを作る場合、models.pyのモデルクラスにテーブル名を指定するべきではない【重複問題】
背景 最近、models.pyを書く時、db_tableを指定している現状に違和感が出てきた。 from django.db import models class Topic(models.Model): #↓これは必要なのか? class Meta: db_table = "topic" #↑これは必要なのか? comment = models.CharField(verbose_name="コメント",max_length=2000) def __str__(self): return self.comment もしやと思い、db.sqlite3を確認する。すると、上記のモデルをマイグレーションしたときのテーブル名 ...Djangoで数値型もしくはUUID型等のフィールドに、クライアント側から未入力を許可するにはnull=Trueとblank=Trueのオプションを