1. 程式人生 > >python web開發——Django入門

python web開發——Django入門

什麼是Django

Django 是一個高層次的Python Web框架,鼓勵快速開發和簡潔實用的設計。由經驗豐富的開發人員構建的,它處理了Web開發的許多麻煩,因此您可以專注於編寫應用程式而無需重新建立輪子。它是免費和開放原始碼的。

具體體現在如下幾個方面:

  1. ORM設計思想,物件關係對映,從前端物件到後端資料庫。
  2. 良好的模板引擎。
  3. 內建後臺管理系統。

Django的特點

  1. 開發快
    Django 能夠以最快速度,幫助開發者將應用從概念變成專案。
  2. 安全性好
    Django 重視安全性,幫助開發人員避免許多常見的安全錯誤。
  3. 可伸縮性好
    Django針對大型網站能夠快速開發和擴充套件。

下載安裝python

首先,你需要下載安裝python,如果你還沒有安裝Python,請參考教程:

下載安裝Django

  • django的安裝非常簡單,使用pip或者easy_install都可以。
pip isntall django

安裝成功後,進入python命令列,檢視版本:

C:\Windows\System32>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright"
, "credits" or "license" for more information. >>> import django >>> django.get_version() '1.11.3' >>>

建立Django專案

1.開啟命令列,進入想要安置專案的目錄;

2.可以使用下面命令建立專案,一些IDE可以自動生成Django專案結構,例如pycharm。

django-admin startproject [專案名]

django-admin startproject mysite

生成的專案結構如下所示

這裡寫圖片描述

下面我解釋一下這些檔案的意義:

1.外層的mysite/根目錄僅僅是專案的一個容器。它的命名對Django無關緊要;你可以把它重新命名為任何你喜歡的名字。

2.manage.py:一個命令列工具,可以使你用多種方式對Django專案進行互動管理。

3.內層的mysite/目錄是你的專案的真正的Python包。它是你匯入任何東西時將需要使用的Python包的名字(例如 mysite.urls)。

4.myblog/init.py :一個空檔案,它告訴Python這個目錄應該被看做一個Python包。

5.myblog/setting.py:該Django 專案的設定/配置。

6.myblog/urls.py:該Django專案的URL宣告;你的Django站點的“目錄”。

7.myblog/wsgi.py:用於你的專案的與WSGI相容的Web伺服器入口。

根據模型在資料庫建立表

這裡我們還沒有模型,我們先簡單的執行一下這個命令:

python manage.py migrate

修改配置檔案

在settings.py中找到LANGUAGE_CODE = ‘en-us’,將其修改為LANGUAGE_CODE = ‘zh-hans’,也就是修改為中文。

啟動本地伺服器

可以在本地啟動伺服器來測試我們的程式(當然實際專案當中需要真正的商業伺服器例如:Nginx等)
進入到你的專案目錄,(與manage.py同一目錄下)
啟動本地伺服器命令如下:

python manage.py runserver

執行上面命令輸出如下:

E:\myblog>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin,
 auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 23, 2017 - 14:47:52
Django version 1.11.3, using settings 'myblog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

檢視執行結果

It worked!
Congratulations on your first Django-powered page.

Next, start your first app by running python manage.py startapp [app_label].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!

這裡寫圖片描述

建立應用

首先,我們來理解一下專案和應用的區別,一個專案可以包含多個應用,應用在專案裡面是獨立的。例如:一個線上教育專案,包含多個應用,有:部落格、視訊、社群等。
下面我們建立一個簡單的投票系統,系統中有兩個模型分別是問題和問題選項,後面我們將詳細介紹。

建立應用使用如下命令:(仍然是在專案目錄下)

E:\myblog>python manage.py startapp polls

E:\myblog>

生成的應用polls目錄如下所示:

這裡寫圖片描述

1.polls是應用的包名稱
2.admin.py 是該應用的後臺管理程式,後面我們再介紹。
3.migrations 是一個包名稱,裡面的內容是由模到資料庫遷移內容。
4.models.py 是模型檔案。
5.tests.py 是單元測試。
6.views.py 是檢視層內容。

定義模型

django採用了ORM設計思想,就是物件關係對映(Object Relation Mapping),先設計模型,根據模型自動生成資料庫表。

模型都繼承django.db.models.Model類。下面開啟models.py,建立如下兩個模型類:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Question(models.Model):
    question_text = models.CharField(verbose_name="問題",max_length=200)
    pub_date = models.DateTimeField(reversed("釋出日期"))
class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(verbose_name='選項',max_length=200)
    vote = models.IntegerField(verbose_name='投票數',default=0)

啟用模型

要想讓系統識別模型,必須在settings.py中配置應用,開啟settings.py,在INSTALLED_APPS選項中新增應用polls。

# Application definition

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

這裡是一個應用的列表,上面的幾個應用都是django自帶的應用,有後臺管理、授權、內容型別、會話、訊息管理和統計等。

這裡我們添加了自己的應用polls,這樣當我們執行資料庫遷移命令時,會找到我們的應用,根據該應用中的模型生成對應的資料庫表。

生成資料庫

下面我們使用命令來生成資料庫。

E:\myblog>python manage.py migrate
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
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

E:\myblog>python manage.py makemigrations polls
Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Choice
    - Create model Question
    - Add field question to choice

E:\myblog>

下載後配置環境變數。

然後將命令列定位到當前專案sqlite資料庫所在的目錄,使用sqlite命令可以檢視我們建立好的資料庫。

命令如下:

>sqlite3
>sqlite3 .\db.sqlite3
sqlite3> .datebases
sqlite3> .tables
sqlite3> .schma pool_choice

也可以使用如下命令檢視建立表的內容:

python manage.py sqlmigrate polls 0001