Python創建項目文件夾作用及配置

1、創建項目及文件夾作用

(1)項目創建

在Pycharm頁面,依次點擊點擊file > New Project…後,在如下彈出框中,先選擇左側的Django,然後選擇右側創建項目的位置及文件名,點擊右下角Create創建即可。
在這裏插入圖片描述
如下展示的是創建成功後文件夾目錄:
在這裏插入圖片描述

(2)文件夾作用

上圖中各文件夾作用:

  1. 外層MyDjango:文件夾名字,可更改;
  2. 內層MyDjango:項目名字;
  3. 內層templates:放置項目的靜態文件,如前端代碼、項目圖片等等;
  4. manage.py:命令行工具,使整個項目的啓動文件;

其中內層文件夾MyDjango中有五個文件,作用如下:

  • Init.py:初始化文件,無需修改,是項目的初始化文件,有了這個文件標誌當前文件夾是一個包,可以被引用;
  • asgi.py:ASGI(Asynchronous Server Gateway Interface)是 Django 團隊提出的一種具有異步功能的 Python web 服務器網關接口協議。能夠處理多種通用的協議類型,包括 HTTP,HTTP2 和 WebSocket。WSGI是基於 HTTP 協議模式的,不支持WebSocket,而ASGI的誕生則是爲了解決 Python 常用的 WSGI 不支持當前 Web 開發中的一些新的協議標準(WebSocket、Http2 等)。同時,ASGI向下兼容WSGI標準,可以通過一些方法跑WSGI的應用程序。常用的「服務器」有Daphne、Uvicorn;
  • settings.py:項目配置文件,所有的Django的配置信息都在這裏面,包括數據庫的配置,靜態文件的配置,還有django依賴的第三方擴展包;
  • urls.py:項目路由設置,可理解爲網站的地址信息;
  • wsgi.py:全稱Python Web Server Gateway Interface,是Python服務器網關接口,是Python應用與Web服務器之間的接口,用於Django項目在服務器上的部署和上線,一般不用修改。

(3)創建APP

每一個APP就是一個獨立的模塊,互相之間開發不受影響。

在Pycharm內的終端中輸入命令
python manage.py startapp app名字

如下圖所示:
在這裏插入圖片描述
生成的新的目錄結構會多一個app1文件夾,如下圖所示:
在這裏插入圖片描述
app1爲一個app的名字,裏面各個文件作用如下:

  1. migrations文件夾:數據遷移包 , 負責遷移文件 , 生成數據庫表數據 , 後期我們要使用他去結合models生成數據庫表。
    python manage.py makemigrations:生成遷移文件
    python manage.py migrate:執行遷移文件
  2. init.py:初始化文件 同樣也標誌我們的app可以被引用;
  3. admin.py:後臺管理系統 , 後期我們的可以通過他管理我們的model和數據庫;
  4. app.py:Django的生成app名稱的文件;
  5. models.py:模型文件 裏面放的都是數據庫表的映射;
  6. tests.py:測試文件;
  7. views.py:邏輯處理模塊,視圖函數文件。

2、配置

settings.py文件各個模塊作用:

1.項目路徑

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

2.加密
主要用於重要數據的加密處理,提高系統安全性,是哈希值。主要用於用戶密碼、CSRF機制和會話Session等數據加密。

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '2^1$ticf0_*n5c+sk(2eaxsax#6@y*hd7ffsq#4(3il6b#)6a$'

3.調試模式
布爾類型,開發階段應設置爲True,在開發過程中自動檢測代碼是否發生更改,根據檢測結果執行是否刷新重啓系統。
項目部署階段改爲False,否則會泄露系統相關信息。

DEBUG = True

4.設置可訪問的域名
默認爲空。當DEBUG爲True且ALLOWED_HOSTS爲空時,項目只允許以localhost或者127.0.0.1在瀏覽器上訪問;當DEBUG爲False時,ALLOWED_HOSTS 爲必填項,否則無法啓動,如果想允許所有域名訪問,可設置ALLOWED_HOSTS = [’*’]

ALLOWED_HOSTS = []

5.App列表
說明有哪些App,此時已有的admin、auth和session等
admin:內置後臺管理系統;
auth:內置用戶認證系統;
contenttypes:記錄項目中所有model元數據(Django的ORM框架);
session:Session會話功能,用於標識當前網站的用戶身份,記錄相關用戶信息;
messages:消息提示功能;
staticfiles:查找靜態資源路徑;
app1:添加的一個app。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ‘app1’
]

6.中間件
中間件是介於request與response處理之間的一道處理過程,能在全局上改變django的輸入與輸出。
比如已經默認開啓了csrf驗證。csrf機制主要用於表單提交,防止竊取網站用戶信息來製造惡意請求。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

7.根級url配置

ROOT_URLCONF = 'MyDjango.urls'

8.靜態文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

9.WSGI接口

WSGI_APPLICATION = 'MyDjango.wsgi.application'

10.數據庫設置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

11.密碼驗證

AUTH_PASSWORD_VALIDATORS = [
    {
        # 檢查密碼和用戶某些屬性的相似性
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        # 檢查密碼的最小長度
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        # 檢查密碼是否出現在常用密碼錶中
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        # 檢查密碼是否全爲數字
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

12.語言、時區、

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

13.靜態文件

STATIC_URL = '/static/'

例如:

#單級目錄靜態文件
# STATICFILES_DIRS=(
# os.path.join(BASE_DIR,"statics"),
# )
#多級目錄靜態文件
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"blog","statics"),
)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章