とりあえず覚えた系の事を書き殴っていくページ(随時更新)
※Pythonは3系です
Django: migration
1 2
| $ python manage.py migrate $ python manage.py migrate [マイグレーションID]
|
ロールバック等の、狙った位置までマイグレーションしたい場合は、[マイグレーションID]をつけて運用する
[マイグレーションID]を省略した場合は、全てのマイグレーションが適用される
1 2 3 4 5
| // migration作成 $ python manage.py makemigrations [appname]
// 実行されたmigrationの確認 $ python manage.py showmigrations [appname]
|
1 2
| // 指定のマイグレーションIDで発行されるSQLを確認する場合 $ manage.py sqlmigrate [マイグレーションID]
|
1 2 3
| // スキーマからモデルのリバース生成 $ python manage.py inspectdb > models.py $ python manage.py inspectdb [tablename] > models.py
|
AssertionError: A model can’t have more than one AutoField.
primary_key=True
を明示的にしていく事で解決
1 2
| - id = models.AutoField() + id = models.AutoField(primary_key=True)
|
web.Streams.name: (fields.E121) ‘max_length’ must be a positive integer.
inspectdb後に、max_length=-1
が設定されていたので、これを整数にしてね、という内容。max_lengthに整数値を設定して解決
1 2
| - name = models.CharField(max_length=-1) + name = models.CharField(max_length=20)
|
Django: test
1 2 3
| // テスト $ python manage.py test $ python manage.py test [appname].tests.test_xxxxxxx
|
Django: runserver
1 2 3 4
| // 開発サーバ $ python manage.py runserver $ python manage.py runserver 3000 $ python manage.py runserver --settings=[appname].settings
|
Django: collectstatic
1 2 3 4 5
| // 静的ファイル $ python manage.py collectstatic
// 入力を無しにして現存するファイルを削除 $ python manage.py collectstatic --noinput --clear
|
Python: 正規表現
1 2 3 4 5 6 7 8 9
| import re
keyword = "bbb" if re.compile("^aaa$").search(keyword): print("A") elif re.compile("^bbb$").search(keyword): print("B")
-> B
|
Python: URLパース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import urllib.parse
o = urllib.parse.urlparse("https://example.com/path/to/foo/bar/?aaa=1&bbb=2#hoge")
print(o.scheme) -> https
print(o.hostname) -> example.com
print(o.path) -> /path/to/foo/bar/
print(o.path.split("/")) -> ['', 'path', 'to', 'foo', 'bar', '']
print(o.query) -> aaa=1&bbb=2
print(o.geturl()) -> https://example.com/path/to/foo/bar/?aaa=1&bbb=2#hoge
|
Django: 404 NotFoundを返す
1 2 3 4 5 6 7 8 9 10
| from django.http import HttpRequest, Http404
def index(request): assert isinstance(request, HttpRequest)
# 例: GETパラメータに、"category=python"を持ってなければ404にする(raise Http404) if "python" == request.GET.get("category"): return render(request, 'index.html') else: raise Http404
|
リンク(参考サイトや過去記事など)
Django マイグレーション まとめ ※超参考
Tag: Python
Tag: Django