Django第一期

安裝Django

去https://www.djangoproject.com/download/ 下載最新版的Django,而後解壓放到Anaconda\Lib\site-packages目錄下,而後cmd進入此目錄,輸入安裝命令:python

python setup.py install

安裝成功後,配置系統環境變量,將Anaconda\Lib\site-packages\Django-2.0.6添加到PATH中mysql

建立項目

django-admin startproject mysite

生成的項目的結構爲:web

mysite/                  # container for project
    manage.py            # command-line utility
    mysite/                # actual Python package for project
        __init__.py        # empty file, tells python that this directory considered as a python package
        settings.py        # configuration for project
        urls.py            # URL declaration for project
        wsgi.py            # An entry-point for WSGI-compatible web server to serve project

運行項目

python manage.py runserver

python manage.py runserver 0:8000  # 0.0.0.0:8000的縮寫

運行項目的同時能夠配置IP和port,默認開啓8000端口sql

若是在運行的時候,發生utf8的編碼問題,多是計算機名字爲中文致使!!!數據庫

建立app(我的理解成功能塊)

一個Django實例包含多個INSTALLED_APPS,它們也能夠在多個實例中使用。默認狀況下,會包含下面這些APPSdjango

  • django.contrib.admin 管理員站點
  • django.contrib.auth 一個身份驗證系統
  • django.contrib.contenttypes 一個content types的框架
  • django.contrib.sessions 一個會話框架
  • django.contrib.messages 一個消息框架
  • django.contrib.staticfiles 一個管理靜態文件的框架

包含這些經常使用的APPS會提供一些便利bash

一個project包含若干個app和配置信息,其中每一個app實現某個功能,而且能夠存在於多個project中session

python manage.py startapp polls

一旦建立好後,polls就會存在於manage.py同層目錄,而後來看下整個項目的結構oracle

mysite/
    db.sqlite3
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py

自定義的APP的目錄下,有個apps.py文件,裏面有個config類,須要將這個類名添加到settings.py的INSTALLED_APPS中去,最後一個就是本身添加進去的app

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

urls.py

urlpatterns=[

    path(<URLPattern>, <function>),

    path(<URLPattern>, include(<other_URLPattern>))
]

path(route, view, [**kwargs, name])

  • route:包含URL模式的字符串,在處理一個request時,Django從urlpatterns中的第一個模式開始遍歷,直到找到一個匹配的模式
  • view:當Django找到一個匹配的模式,就會調用指定的view函數,以HttpRequest對象和任何捕捉到的值做爲關鍵字參數
  • kwargs:以詞典的形式傳遞的任意關鍵字參數
  • name:給你的URL命名,以避免與Django其它的URL發生因同名而模棱兩可的狀況

啓動數據庫

默認使用SQLite,若是要換,須要更改配置信息。

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

其中ENGINE要改成django.db.backends.postgresql/django.db.backends.mysql/django.db.backends.oracle

NAME是數據庫名字,若是不是sqlite3還須要本身添加USER,PASSWORD,HOST等配置信息,以下圖是一個mysql的配置樣例:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
		'USER':'root',
		'PASSWORD':'root',
		'HOST':'localhost',
		'PORT':'3306',
    }
}

每一個APPS都會使用若干個數據庫,咱們須要首先建立這些數據庫,使用下面的命令來建立:

python manage.py migrate

migrate命令將查看settings.py文件中全部的INSTALLED_APPS並建立他們所需的數據庫和表。

建立models

藉助元數據來定義數據庫佈局

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

在APP/models.py裏面建立類,每一個類都繼承於models.Model,類變量至關於數據庫的字段,因此和scrapy相似,Django提供了一個Field類,全部的字段都是Field的實例。好比CharField()將建立一個字符字段(char),DateTimeField()將建立一個datetime類型的字段

這裏建立的每一個類變量,不單單將成爲數據庫的字段名/列名,也將在python代碼中供使用

激活models

建立和修改models都須要建立migration(它存儲的是你對models的改動)

python manage.py makemigrations <app_name>

這個命令會在app目錄下的migrations/001_initial.py中建立model對應的migration

而後咱們須要將這個migration應用到數據庫中去

python manage.py migrate

也能夠經過下面的命令來獲得model對應的sql代碼

python manage.py sqlmigrate <app_name> 0001

建立管理員用戶

python manage.py createsuperuser
相關文章
相關標籤/搜索