国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django 項(xiàng)目配置初體驗(yàn)(一)

Wildcard / 1425人閱讀

摘要:靜態(tài)資源路徑可以有多個,所以這里使用一個列表進(jìn)行配置再次進(jìn)入,完美后記現(xiàn)在只涉及到了項(xiàng)目的配置和一些基礎(chǔ)的配置,沒有涉及到請求從開始到完成的任何內(nèi)容。下篇教程將集中進(jìn)行記錄。

前言

推薦使用 virtualenv 創(chuàng)建 python 虛擬環(huán)境,防止因?yàn)槭褂?pip 安裝依賴到全局引起版本沖突的問題,PyCharm 默認(rèn)會生成一個 venv 目錄并創(chuàng)建虛擬環(huán)境,使用 IDE 自帶的終端也會默認(rèn)激活虛擬環(huán)境

使用的教程基于 Django 1.9.8,現(xiàn)在 Django 已經(jīng)升級到了 2.0.3,所以可能會有部分寫法不太常見

涉及到的知識:

初始化項(xiàng)目

注冊項(xiàng)目

database 配置

生成 Django 默認(rèn)表,沒有配置 model

view 和 template 配置

url 配置(包括配置 name)

靜態(tài)文件路徑配置

基礎(chǔ)環(huán)境

Pycharm 2018

Django 2.0.3

Python 3.6.4

mxonline start 分支

Python升級3.6 強(qiáng)力Django+殺手級Xadmin打造在線教育平臺

目錄結(jié)構(gòu) 初始結(jié)構(gòu)

直接采用 PyCharm 初始化一個 Django 項(xiàng)目

.
├── db.sqlite3        # 默認(rèn)的 sqlite 數(shù)據(jù)庫文件
├── manage.py         # 啟動腳本
├── mxoline           # 主要配置存放路徑
│?? ├── __init__.py
│?? ├── settings.py   # 全局配置
│?? ├── urls.py       # url 配置文件
│?? └── wsgi.py
└──  templates        # html 文件模板
新建 app
$ django-admin startapp message

生成的 app 結(jié)構(gòu):

└── message          
    ├── __init__.py  
    ├── admin.py     
    ├── apps.py
    ├── migrations
    │?? └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

新建其他目錄

log:存放 log 日志

static:存放靜態(tài)資源

media:存放用戶上傳的媒體文件

最終的項(xiàng)目結(jié)構(gòu)

防止項(xiàng)目過大的時候,app 過多難以管理

.
├── apps                 # app 集中存放,防止當(dāng)項(xiàng)目規(guī)模變大難以管理
│?? └── message          # 新建的 message app
├── db.sqlite3           # 默認(rèn)的 sqlite 數(shù)據(jù)庫
├── log                  # 存放 log 日志
├── manage.py            # 啟動腳本
├── media                # 用戶上傳的媒體文件
├── mxoline              # 項(xiàng)目主要配置目錄
│?? ├── __init__.py      # 初始化文件
│?? ├── __pycache__      # 
│?? ├── settings.py      # django 框架全局配置文件
│?? ├── urls.py          # url 映射關(guān)系配置文件
│?? └── wsgi.py          # 
├── static               # 靜態(tài)資源文件
├── templates            # 模板存放目錄
└── venv                 # PyCharm 創(chuàng)建的虛擬 Python 環(huán)境
    ├── bin
    ├── include
    ├── lib
    ├── pip-selfcheck.json
    └── pyvenv.cfg
項(xiàng)目初體驗(yàn) 注冊項(xiàng)目

每次創(chuàng)建一個 App,我們都需要在 settings.py 中進(jìn)行注冊:

# {BASE_DIR}/mxonline/settings.py
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "apps.message"
]

可以看到在列表中添加了 message 項(xiàng)目。

配置數(shù)據(jù)庫

默認(rèn)使用的是 sqlite,我們在這里使用 mysql(有坑預(yù)警,昨天晚上查了好久)

進(jìn)入 setting 文件,默認(rèn)的配置情況是這個樣子的:

# {BASE_DIR}/mxonline/settings.py
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(BASE_DIR, "db.sqlite3"),
    }
}

修改成這個樣子:

# {BASE_DIR}/mxonline/settings.py
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",  # 使用mysql引擎
        "NAME": "test_django",                 # 數(shù)據(jù)庫名稱
        "USER": "root",                        # 用戶
        "PASSWORD": "root",                    # 密碼
        "HOST": "127.0.0.1"                    # 地址
    }
}

然后需要安裝 mysql 的驅(qū)動,mac 下會出現(xiàn)裝不上的情況,具體可以參考這里,自行修改 mysql-config 文件。

# 這里是 mac 的驅(qū)動,使用Windows 同學(xué)對不起啊。
$ pip install mysqlclient

Windows 上需要自行下載 mysql-python 驅(qū)動,好像也挺多坑的,按下不表。

生成數(shù)據(jù)表

Pycharm 中,點(diǎn)擊 Tools 中的 Run manage.py Task,然后就可以在里邊快捷的運(yùn)行 manage.py 提供的各種腳本了。

如果在命令行中運(yùn)行的話,需要在下面的命令前邊加上 python manage.py

$ makemigrations
$ migrate

輸出大概如下:

bash -cl "/Users/zhoubao/workplace/python/mxoline/venv/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/django_manage.py migrate /Users/zhoubao/workplace/python/mxoline"
(B[mTracking file by folder pattern:  migrations
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK

可以登錄自己的 mysql 數(shù)據(jù)庫查看一下是不是生成了一堆數(shù)據(jù)表:

$ mysql -uroot -proot
$ change test_django
$ show tables;

我這里的輸出是這個樣子的:

+----------------------------+
| Tables_in_test_django      |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
10 rows in set (0.00 sec)

當(dāng)然可以使用 Navicat 進(jìn)行查看,這里就不截圖了。

查看歡迎頁面
runserver

然后可以訪問 127.0.0.1:8000,查看是否進(jìn)入了 django 的默認(rèn)歡迎頁面。

新建 templates

先在 templates 中添加一個 form.html 文件(也算是懶到家了,就直接用 curl 拉取了)

$ cd templates
$ curl -L https://raw.githubusercontent.com/missxiaolin/python-django/1860df7790a5daefafd2c052c1e3afedbbc48151/templates/mesage_form.html > message_form.html
在 app 中新建 view

在這里指定 view 和 template 的關(guān)系,默認(rèn)的 templates 目錄就是 {BASE_DIR}/templates

# {BASE_DIR}/apps/message/views.py
from django.shortcuts import render


def getForm(request):
    return render(request, "message_form.html")
為 template 創(chuàng)建 url 映射

目的是將剛才的 form.html 頁面呈現(xiàn)出來。

進(jìn)入生成項(xiàng)目的時候生成的和項(xiàng)目名稱相同的那個目錄下邊的 urls.py 文件中,和 settings.py 文件同級,文件已經(jīng)配置好了 /admin 路由:

# {BASE_DIR}/mxonline/urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path("admin/", admin.site.urls),
]

需要添加自己的配置項(xiàng),這里和 1.9.8 不太一樣,不需要使用正則,正則對應(yīng)的是 re-path

# {BASE_DIR}/mxonline/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("message.urls"))
]
app 內(nèi)部維護(hù) url 文件

這里的處理方式和教程中的不太一樣,首先教程基于的是 Django 的 1.9.8 版本,配置路由需要使用到正則表達(dá)式相關(guān)的知識。其次教程在這里對 app 中的 url 進(jìn)行了處理,我選擇的方式則是在 app 自己的目錄中維護(hù)自己的 url。

$ cd apps/message
$ touch urls.py
# {BASE_URL}/apps/message/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path("", views.getForm, name="go_form")
]

在這里可以指定一個 name 參數(shù),這個參數(shù)在后邊會非常有用,因?yàn)樵?template 中可以通過 name 來指定 url

解決模塊引用問題

在配置完成 url 之后,運(yùn)行 runserver 之后(或者在命令行中運(yùn)行 python manage.py runserver),會報錯:

ModuleNotFoundError: No module named "message"

意思是找不到名字叫 message 的這個模塊。

因?yàn)槲覀兊?message app 之前已經(jīng)被我們放到了 apps 目錄下,所以我們的解決方法會有兩種:

不更改 settings.py

如果不想要修改 settings.py 的話,我們在每次引用 apps 下面的應(yīng)用的話,需要指定路徑。所以修改文件如下:

# {BASE_DIR}/mxonline/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("apps.message.urls"))
]

這樣雖然能用,但是每次都需要寫 apps,不太方便。

將 apps 設(shè)置為模塊路徑

這樣 Django 就會在 apps 中去尋找 message 模塊(app)了:

# {BASE_DIR}/mxonline/settings.py
import sys
sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

這里我選擇的是第二種處理方式。

這樣我們點(diǎn)擊進(jìn)去 127.0.0.1:8000 就應(yīng)該能看到 message_form.html 頁面文件了。

解決 CSS 路徑不正確的問題

在進(jìn)入頁面的時候,我們會發(fā)現(xiàn) css 文件的路徑不正確,所以需要在 settings.py 文件中設(shè)置 static 路徑。

靜態(tài)資源路徑可以有多個,所以這里使用一個列表進(jìn)行配置:

# {BASE_DIR}/mxonline/settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,"static")
]

再次進(jìn)入 127.0.0.1:8000,完美~

后記

現(xiàn)在只涉及到了項(xiàng)目的配置和一些基礎(chǔ)的配置,沒有涉及到 Django 請求從開始到完成的任何內(nèi)容。下篇教程將集中進(jìn)行記錄。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41443.html

相關(guān)文章

  • Celery實(shí)際使用與內(nèi)存泄漏問題(面試)

    摘要:結(jié)論執(zhí)行完任務(wù)不釋放內(nèi)存與原一直沒有被銷毀有關(guān),因此可以適當(dāng)配置小點(diǎn),而任務(wù)并發(fā)數(shù)與配置項(xiàng)有關(guān),每增加一個必然增加內(nèi)存消耗,同時也影響到一個何時被銷毀,因?yàn)槭蔷鶆蛘{(diào)度任務(wù)至每個,因此也不宜配置過大,適當(dāng)配置。 1.實(shí)際使用 ? 監(jiān)控task的執(zhí)行結(jié)果:任務(wù)id,結(jié)果,traceback,children,任務(wù)狀態(tài) ? 配置 backend=redis://127...

    0x584a 評論0 收藏0
  • [] Ruff之體驗(yàn)

    摘要:實(shí)現(xiàn)項(xiàng)目的配置初始化,這個有些像我們在寫模塊的時候初始化配置,其實(shí)這里也是在初始化項(xiàng)目配置。 引言 首先簡單說一下Ruff,Ruff是一個JavaScript運(yùn)行時,專門為開發(fā)硬件而設(shè)計(jì),其底層實(shí)現(xiàn)是基于Node.js,讓我們可以使用JavaScript語言去實(shí)現(xiàn)自己想要的硬件功能設(shè)計(jì),下面就是從零開始接觸和學(xué)習(xí)使用Ruff showImg(https://segmentfault.c...

    Youngdze 評論0 收藏0
  • 利用 NGINX 最大化 Python 性能,第部分:Web 服務(wù)和緩存

    摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時使用以上三種功能,和都能帶來很大好處。再就是下篇文章會介紹如何把和當(dāng)作反向代理服務(wù)器和多個應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...

    1treeS 評論0 收藏0
  • 利用 NGINX 最大化 Python 性能,第部分:Web 服務(wù)和緩存

    摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時使用以上三種功能,和都能帶來很大好處。再就是下篇文章會介紹如何把和當(dāng)作反向代理服務(wù)器和多個應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...

    v1 評論0 收藏0
  • 【個人】微信小程序體驗(yàn)

    摘要:準(zhǔn)備工作開發(fā)工具下載地址竟然隱藏在一個超鏈接里,真的很不醒目啊文檔地址初次體驗(yàn)新建項(xiàng)目的時候,可以選擇是小程序小游戲,這次我體驗(yàn)的是小程序的開發(fā)。可以配置小程序邊界的,如頂部的導(dǎo)航欄的一些樣式。 很早前就想體驗(yàn)一把小程序的開發(fā)了,如果熟悉三大框架的話,小程序的開發(fā)還是很容易上手的,所以只要跟著做一個小應(yīng)用,加上官方的文檔就十分好學(xué)了。加上官方提供的開發(fā)工具也比較簡潔好用,初次體驗(yàn)的我覺...

    894974231 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<