Django搭建示例項目實戰與避坑細節

Django 開發項目是很快的,有多快?看完本篇文章,你就知道了。

安裝 Django

前提條件:已安裝 Python。

Django 使用 pip 命令直接就可以安裝:

pip install django

如果安裝失敗,很可能是因為網絡連接超時了,試試國內鏡像:

pip install --default-timeout=6000 -i //pypi.tuna.tsinghua.edu.cn/simple django

這條命令同時延長了超時時間,提高成功率。

安裝完成後,通過 django-admin --version 這條命令驗證。

創建 project

按住 Windows 鍵 + R,輸入 cmd 回車,接着 cd 到任意目錄:

或者先打開目錄窗口,在地址欄輸入 cmd 回車,不需要 cd(推薦):

在命令行窗口輸入命令創建 project:

django-admin startproject mysite

目錄結構如下(注意有 2 個 mysite 哦):

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

創建 app

Django 項目由 1 個 project 和多個 app 組成。project 存放項目配置,app 是網站各個功能的具體實現。

app 的放置目錄沒有限制,這裡先放在和 mysite 的同級目錄中,先進入外層的 mysite 文件夾:

cd mysite

輸入命令創建:

django-admin startapp polls

目錄結構如下:

mysite/
	polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    mysite/
    manage.py

使用 cmd 創建完 project 和 app 以後,就可以打開 PyCharm,再 Open mysite 項目了:

為了讓 app 和 project 關聯起來,需要在 mysite/settings.py 文件中添加配置:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls.apps.PollsConfig',  # 添加
]

在 polls/models.py 文件中添加數據模型:

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

連接 MySQL

前提條件:已安裝 MySQL,創建好數據庫。

Django 默認使用輕量級數據庫 SQLite,我們切換為常用的 MySQL。

修改 mysite/settings.py 中的數據庫配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '主機',
        'PORT': 端口,
        'NAME': '數據庫名',
        'USER': '用戶名',
        'PASSWORD': '密碼'
    }
}

Django 默認通過底層調用 mysqlclient 這個庫和 MySQL 交互。但是 mysqlclient 非常不好安裝!我們改用 pymysql。

先安裝:

pip install pymysql

然後在與 mysite/settings.py 文件同級的 __init__ 文件中添加:

import pymysql

pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()

數據遷移

數據遷移,指的是把代碼中的數據模型,遷移到數據庫中,創建相應的表結構。

第一步,告訴 Django 數據模型有更新:

python manage.py makemigrations polls

執行後輸出:

Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice

第二步,執行數據遷移同步:

python manage.py migrate

執行後輸出:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Rendering model states... DONE
  Applying polls.0001_initial... OK

數據庫表就創建好了:

啟動項目

萬事俱備,只差 1 條啟動命令,在根目錄執行:

python manage.py runserver

訪問 //127.0.0.1:8000/,就可以看到來自 Django 老鐵的這發火箭了:

小結

本文是對《匆匆一眼》文章的補充。介紹了如何安裝 Django,創建 Django 的 project 和 app,連接 MySQL,執行數據遷移,最後啟動項目的實際操作步驟。思路很清晰。整體流程清楚了,可這些文件都是幹嘛的呢?

參考資料:

//docs.djangoproject.com/en/3.1/intro/tutorial01/

Tags: