Django 2.0.7小さな知識を使用
4534 ワード
Django 2.0.3使用小知識
実行環境:
Python 3.6.4
Django 2.0.7
Django Adminではmodelが中国語で表示されます
Modelを定義する場合は、Metaオブジェクトを定義し、表示する中国語の名前を設定します.verbose_nameは単数名、verbose_name_pluralは複数名です.中国語は単数、複数を区別していないため、同じ名称として定義されている.
Django Adminではmodelフィールドが中国語で表示されます
モデルを定義する場合、各フィールドの後にverbose_を追加します.name,次の例のtitle
Django Adminのappは中国語で表示されます
カスタム名が必要なapp(appディレクトリのblogを仮定)では、次のように変更します.
警告:?(urls.W005) URL namespace 'admin' isn't unique. You may not be able to reverse all URLs in this namespace
urls.pyのurlpatternsでadminが繰り返し定義されているため、この警告があり、繰り返し定義されたurlを注釈すればよい.
Djangoタイムゾーン設定
このノートは転載です
Djangoのプロファイル
Djangoデフォルトポート番号の変更
Djangoのデフォルトポート番号は8000です.runserverを起動するときに、python manage.py runserver 0.0.0.0:8001などのポート番号を指定できます.
しかし、このように起動するたびにポート番号に関するコマンドを実行する必要があり、理想的な状態では、ポート番号をプロファイルに配置することができ、起動時にプロファイルに基づいて自動的に対応するポート番号を選択することができる
参照先:https://stackoverflow.com/questions/23639085/django-change-default-runserver-port
プロジェクトルートディレクトリのmanage.pyを変更します.主に下の部分にコメントし、デフォルトのアドレスも変更できます.
QueryDict回転dict
Djangoでは、requestのPOSTとGET属性は、いずれもQueryDictのインスタンスであり、直接dict(request.GET)で変換(HttpRequestのインスタンスをrequestと仮定)し、valueがlistである場合、valueがstringであっても['張三']となり、正しい方法はrequest.GET.dict()であるべきであり、POSTも同様の方法である.
JsonResponseはdict以外のオブジェクトを受け入れます
デフォルトでは、JsonResponseは、listなどの非dictオブジェクトが入力された場合にTypeErrorを開始するdictオブジェクトを受け入れる必要があります.このときJsonResponseのパラメータにsafeをFalse(デフォルトはTrue)に増やし、非dictオブジェクトを処理させます.
Djangoによる静的ファイルのレンダリングを強制
DjangoのDebugモードがオフの場合、既定では静的ファイルはレンダリングされません.合理的な方法は、静的ファイルをNginxに配置し、Djangoで構成することです.ただし、プロジェクトの規模が極めて小さい場合や、Nginxを導入したくない場合は、コマンドでDjangoに静的ファイルを強制的にレンダリングすることができます.
python manage.py runserver --insecure
実行環境:
Python 3.6.4
Django 2.0.7
Django Adminではmodelが中国語で表示されます
Modelを定義する場合は、Metaオブジェクトを定義し、表示する中国語の名前を設定します.verbose_nameは単数名、verbose_name_pluralは複数名です.中国語は単数、複数を区別していないため、同じ名称として定義されている.
from django.db import models
class Article(models.Model):
class Meta:
verbose_name = ' '
verbose_name_plural = ' '
Django Adminではmodelフィールドが中国語で表示されます
モデルを定義する場合、各フィールドの後にverbose_を追加します.name,次の例のtitle
class Article(models.Model):
class Meta:
verbose_name = ' '
verbose_name_plural = ' '
title = models.CharField(max_length=256, verbose_name=' ')
Django Adminのappは中国語で表示されます
カスタム名が必要なapp(appディレクトリのblogを仮定)では、次のように変更します.
# blog/apps.py
from django.apps import AppConfig
class BlogConfig(AppConfig):
name = 'blog'
verbose_name = ' '
# blog/__init__.py
default_app_config = 'blog.apps.HealthConfig'
警告:?(urls.W005) URL namespace 'admin' isn't unique. You may not be able to reverse all URLs in this namespace
urls.pyのurlpatternsでadminが繰り返し定義されているため、この警告があり、繰り返し定義されたurlを注釈すればよい.
urlpatterns = [
url('', admin.site.urls),
url(r'^jet/', include('jet.urls', 'jet')),
#
# url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
Djangoタイムゾーン設定
このノートは転載です
Djangoのプロファイル
settings.py
では、2つの構成パラメータが時間依存タイムゾーンに関係し、それぞれTIME_ZONE
とUSE_TZ
である.USE_TZ
がTrue
に設定されている場合、Djangoはシステムのデフォルト設定のタイムゾーン、すなわちAmerica/Chicago
を使用します.この場合のTIME_ZONE
は、設定の有無にかかわらず機能しません.USE_TZ
がFalse
に設定され、TIME_ZONE
がNone
に設定されている場合、DjangoはデフォルトのAmerica/Chicago
時間を使用します.TIME_ZONE
が他のタイムゾーンに設定されている場合は、状況によって異なり、WindowsシステムであればTIME_ZONE
の設定は無駄であり、Djangoが本機を使用する時間である.他のシステムであれば、このタイムゾーンの時間を使用して、USE_TZ = False
、TIME_ZONE = 'Asia/Shanghai'
を設置し、上海のUTC
時間を使用します.Djangoデフォルトポート番号の変更
Djangoのデフォルトポート番号は8000です.runserverを起動するときに、python manage.py runserver 0.0.0.0:8001などのポート番号を指定できます.
しかし、このように起動するたびにポート番号に関するコマンドを実行する必要があり、理想的な状態では、ポート番号をプロファイルに配置することができ、起動時にプロファイルに基づいて自動的に対応するポート番号を選択することができる
参照先:https://stackoverflow.com/questions/23639085/django-change-default-runserver-port
プロジェクトルートディレクトリのmanage.pyを変更します.主に下の部分にコメントし、デフォルトのアドレスも変更できます.
#!/usr/bin/env python
import os
import sys
from django.conf import settings
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", cmdline.settings)
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
from django.core.management.commands.runserver import Command
#
Command.default_addr = settings.HOST
#
Command.default_port = settings.PORT
execute_from_command_line(sys.argv)
QueryDict回転dict
Djangoでは、requestのPOSTとGET属性は、いずれもQueryDictのインスタンスであり、直接dict(request.GET)で変換(HttpRequestのインスタンスをrequestと仮定)し、valueがlistである場合、valueがstringであっても['張三']となり、正しい方法はrequest.GET.dict()であるべきであり、POSTも同様の方法である.
form_data = request.POST.dict()
JsonResponseはdict以外のオブジェクトを受け入れます
デフォルトでは、JsonResponseは、listなどの非dictオブジェクトが入力された場合にTypeErrorを開始するdictオブジェクトを受け入れる必要があります.このときJsonResponseのパラメータにsafeをFalse(デフォルトはTrue)に増やし、非dictオブジェクトを処理させます.
return JsonResponse([], safe=False)
Djangoによる静的ファイルのレンダリングを強制
DjangoのDebugモードがオフの場合、既定では静的ファイルはレンダリングされません.合理的な方法は、静的ファイルをNginxに配置し、Djangoで構成することです.ただし、プロジェクトの規模が極めて小さい場合や、Nginxを導入したくない場合は、コマンドでDjangoに静的ファイルを強制的にレンダリングすることができます.
python manage.py runserver --insecure