運行環境:python
Python 3.5.2django
Django 2.0.3app
定義model時,定義一個Meta對象,設置須要顯示的中文名稱。verbose_name爲單數名稱,verbose_name_plural爲複數名稱。由於中文沒有區分單數、複數,因此都定義爲同樣的名稱。this
from django.db import models class Article(models.Model): class Meta: verbose_name = '文章' verbose_name_plural = '文章'
定義model時,在每一個字段後增長verbose_name,以下例子中的titleurl
class Article(models.Model): class Meta: verbose_name = '文章' verbose_name_plural = '文章' title = models.CharField(max_length=256, verbose_name='標題')
在須要自定義名稱的app中(假設app目錄的blog),作以下修改spa
# 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.py中的urlpatterns中重複定義了admin,因此會有此警告,將重複定義的url註釋掉便可。code
urlpatterns = [ url('', admin.site.urls), url(r'^jet/', include('jet.urls', 'jet')), # 註釋掉此行 # url(r'^admin/', admin.site.urls), url(r'^blog/', include('blog.urls')), ]
此筆記爲轉載orm
在Django的配置文件settings.py
中,有兩個配置參數是跟時間與時區有關的,分別是TIME_ZONE
和USE_TZ
server
若是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默認端口號是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)
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對象,若是傳入list等非dict對象,對引起TypeError。這個時候在JsonResponse的參數中增長safe爲False(默認爲True),使其處理非dict對象。
return JsonResponse([], safe=False)
在Django的Debug模式關閉後,默認不會渲染靜態文件。合理的作法應該是將靜態文件部署到Nginx上,再Django中再進行配置。可是有些狀況,好比項目規模極小,不但願引入Nginx,能夠經過命令強制Django渲染靜態文件。
python manage.py runserver --insecure