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は複数名です.中国語は単数、複数を区別していないため、同じ名称として定義されている.
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_ZONEUSE_TZである.USE_TZTrueに設定されている場合、Djangoはシステムのデフォルト設定のタイムゾーン、すなわちAmerica/Chicagoを使用します.この場合のTIME_ZONEは、設定の有無にかかわらず機能しません.USE_TZFalseに設定され、TIME_ZONENoneに設定されている場合、DjangoはデフォルトのAmerica/Chicago時間を使用します.TIME_ZONEが他のタイムゾーンに設定されている場合は、状況によって異なり、WindowsシステムであればTIME_ZONEの設定は無駄であり、Djangoが本機を使用する時間である.他のシステムであれば、このタイムゾーンの時間を使用して、USE_TZ = FalseTIME_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