django2專案環境開發基本配置

水痕001發表於2019-03-04

一、專案建立

  • 1、使用virtualenvwrapperpipenv建立一個django的虛擬環境,並安裝依賴包

  • 2、使用命令建立一個專案

    django-admin startproject [專案名字]
    複製程式碼

二、django中專案檔案的配置

這步驟不使用也可以,看個人,本人喜歡將全部的app放在一個目錄下,使用第三方的app放在一個目錄下

  • 1、專案中建立一個資料夾apps

  • 2、專案中建立一個資料夾extra_apps

  • 3、根據下圖方式將上面兩個建立的資料夾變成根目錄

    django2專案環境開發基本配置

  • 4、在專案的settings.py中新增配置資訊

    import os
    import sys
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
    sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
    複製程式碼
  • 5、使用命令建立app,並直接拖到apps資料夾下

    python manage.py startapp [app名字]
    複製程式碼
  • 6、同理如果是git上下載的第三方原始碼就放到extra_apps資料夾下

三、關於檢視與url的關聯

django中有兩種模式來寫檢視

  • 使用函式的方式(FBV模式)
  • 使用類的方式(CBV模式),本人更喜歡使用類的方式來建立檢視

下面介紹使用CBV模式來實現檢視

  • 1、建立一個bookapp並且在settings.py中註冊

  • 2、將book拖到apps資料夾下

  • 3、在bookapp目錄下建立一個urls.py的檔案,用於存放當前檢視全部的url

  • 4、在檢視類中建立幾個類

    from django.http import HttpResponse
    from django.views import View
    
    
    class BookView(View):
        """
        圖書主頁檢視
        """
    
        def dispatch(self, request, *args, **kwargs):
        	 # dispatch這個函式可以不寫,檢視django原始碼就是從這個函式開始的
            result = super().dispatch(request, *args, **kwargs)
            return result
    
        def get(self, request, *args, **kwargs):
            return HttpResponse('圖書首頁')
    
        def post(self, request, *args, **kwargs):
            pass
    
    
    class BookDetailView(View):
        """
        圖書詳情檢視
        """
    
        def get(self, request, *args, **kwargs):
            # http://localhost:8000/book/1/?name=hello
            print(request.GET.get('name', None))
            print(args)
            # 可以獲取到url上定義的引數
            print(kwargs)
            return HttpResponse('圖書詳情')
    
        def post(self, request, *args, **kwargs):
            pass
    複製程式碼
  • 5、在本app下的urls.py中定義url資訊

    from django.urls import path
    from . import views
    
    app_name = 'book'
    
    urlpatterns = [
        path('', views.BookView.as_view(), name='book_index'),
        path('<int:book_id>/', views.BookDetailView.as_view(), name='book_detail')
    ]
    複製程式碼
  • 6、在主路由中引入當前appurls.py檔案

    from django.urls import path, include
    
    urlpatterns = [
        path('', include('home.urls', namespace='home')),
        path('book/', include('book.urls', namespace='book'))
    ]
    複製程式碼

四、配置時區(後面會有專題介紹)

settings.py中配置(以上海時間為配置)大概在109行

TIME_ZONE = 'Asia/Shanghai' # 上海時區
USE_TZ = True
複製程式碼

五、配置中文顯示(主要是admin中顯示)

settings.py中配置

LANGUAGE_CODE = 'zh-hans' # 中文支援,django1.8以後支援;1.8以前是zh-cn
複製程式碼

六、資料庫的配置

  • 1、預設資料庫是使用sqlite

  • 2、如果要使用mysql資料庫

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', # 資料庫引擎
            'NAME': 'djangotest', #資料庫名稱
            'USER': 'root', # 連結資料庫的使用者名稱
            'PASSWORD': 'root', # 連結資料庫的密碼
            'HOST': '127.0.0.1', # mysql伺服器的域名和ip地址
            'PORT': 3306, # mysql的一個埠號,預設是3306
        }
    }
    複製程式碼
  • 3、如果你是使用pymysql連線工具必須要在站點__init__.py的檔案配置

    import pymysql
    pymysql.install_as_MySQLdb()
    複製程式碼
  • 4、使用mongodb資料庫

    DATABASES = {
        'default': {
            'ENGINE': None,
        }
    }
    from mongoengine import connect
    connect('資料庫名')
    複製程式碼

七、模板的配置

如果是使用命令方式建立的專案,不會自己建立templates的資料夾,需要手動建立

  • 1、手動建立一個資料夾templates

  • 2、在settings.pyTEMPLATES下面配置模板的使用路徑

    'DIRS': [os.path.join(BASE_DIR,'templates' )]
    複製程式碼
  • 3、補充說明'APP_DIRS': True,的認識

    • 這句話的意思是說,如果在templates資料夾下沒找到模板會在已經安裝的app下繼續查詢模板,如果沒有找到就報錯,有就渲染到頁面

八、靜態檔案的配置

在開發過程中可能會使用到的css檔案、js檔案、img檔案我們統一歸到靜態檔案中

  • 1、載入靜態的也是一個app,檢視app中是否載入該元件

    INSTALLED_APPS = [
        ...
        'django.contrib.staticfiles',
    ]
    複製程式碼
  • 2、說明(靜態資料夾的命名是根據settings.pySTATIC_URL一樣就可以)

    STATIC_URL = '/static/'
    複製程式碼
  • 3、在settings.py中配置靜態檔案地址

    STATICFILES_DIRS = (
        'static',
    )
    複製程式碼
  • 4、將static變成django內建標籤(這樣就不需要在每個html頁面頭部{% load staticfiles %})

    # 在settings.py檔案中配置
    TEMPLATES = [
        {
            ...
            'OPTIONS': {
                'context_processors': [
                    ...
                ],
                'builtins': ['django.templatetags.static']
            },
        },
    ]
    複製程式碼

相關文章