Django(一)安裝使用及創建運行項目

簡介

各環境的使用版本如下:
Linux Mint 18.2 (Ubuntu 16.04);
python版本2.7.12和3.5.2;
Django版本爲1.9。

Python下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。Django是一個開放源代碼的Web應用框架,由Python寫成,遵守BSD版權,初次發佈於2005年7月, 並於2008年9月發佈了第一個正式版本1.0 。採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。

Django對應Python版本如下:

Django版本 Python 版本
1.5 2.6.5,2.7,3.2,3.23
1.6 2.6,2.7,3.2,3.3
1.7 2.7,3.2,3.3,3.4
1.8 2.7, 3.2 , 3.3, 3.4, 3.5
1.9, 1.10 2.7, 3.4, 3.5
1.11 2.7, 3.4, 3.5, 3.6
2.0 3.5+

安裝

  • 安裝Django

pip安裝

# 這是基於python2版本的安裝
sudo apt-get install python-pip
sudo pip install Django==1.9
# 這是基於python3版本的安裝
sudo apt-get install python3-pip
sudo pip3 install Django==1.9

Linux自帶源安裝:

sudo apt-get install python-django==1.9 -y

自帶源安裝的 Django 一般版本比較舊,而用 pip 可以安裝最新的版本。
安裝完成後執行下述命令查看安裝的版本:

python -c "import django; print(django.get_version())"

創建一個項目

創建項目

在命令行(終端)中,cd(例如我的是:cd /media/youjun/17658FC8797DEE2A/WorkSpace/DjangoWorkSpace)到你想要用來保存代碼的目錄,然後運行如下命令,如果你怕權限問題在前面加上sudo:

django-admin startproject demo

然後你看到生成的目錄結構如下:

 demo
    demo        # 對整個程序進行配置
         __init__.py
         settings.py  # 配置文件
         urls.py      # URL對應關係
         wsgi.py      # 遵循WSGI規範,一般使用 uwsgi + nginx
    manage.py        # 管理Django程序:如下

運行項目

# 在python2版本運行
python manage.py  # 或如下
python manage.py 8000  # 或如下
python manage.py runserver 127.0.0.1:8000
# 在python3版本運行
python3 manage.py  # 或如下
python3 manage.py 8000   # 或如下
python3 manage.py runserver 127.0.0.1:8000

執行上述命令時會出現紅:

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

這是沒有應用數據庫設置,先不管。
打開 http://127.0.0.1:8000/ 鏈接就能看到Django的It worked!界面。

創建app

在項目生成的第一層demo目錄下(與manage.py同級),執行如下命令創建一個名爲login的app,(版本選擇只是多或者少一個數字,後面就不都寫出來了):

# 在python2版本運行
python manage.py startapp login
# 在python3版本運行
python3 manage.py startapp login

生成的app目錄如下:

login
    migrations        # django orm框架,修改表結構的操作記錄(差異化)
    __init__.py       # python3中有沒有都一樣,python2中必須有
    admin.py          # Django爲我們提供的後臺管理
    apps.py           # 配置當前app
    models.py         # ORM:寫指定的類,通過命令可以創建數據庫結構,M層
    tests.py          # 測試
    views.py          # V層

配置文件

要想項目能映射到建立的app,修改第二層demo目錄的setting.py文件:

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

    'login',    # changed-----
]

視圖函數編輯,編輯生成的login目錄裏的views.py文件:

from django.shortcuts import render

# Create your views here.


def login(request):
    context = {}
    return render(request, 'login.html', context)

接着,綁定 URL 與視圖函數,修改第二層demo目錄裏的urls.py文件。網頁action提交那裏action=”/”,要和urls.py 裏url(r’^’, views.login),保持一致!!!要是login/全是login/,要是login全是login(網頁那裏最前面多一個/來引用),否則點擊提交會報錯::

from django.conf.urls import url
from django.contrib import admin

from login import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', views.login),
]

在第一層demo目錄下創建一個templates模板文件夾,用來存放html文件,在templates文件中新建一個login.html文件,內容爲:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/login" method="post">
        <p>
            <label for="username">用戶名:</label>
            <input id="username" type="text" />
        </p>
        <p>
            <label for="password">密&nbsp;&nbsp;&nbsp;&nbsp;碼:</label>
            <input id="password" type="text" />
        </p>
        <p>
            <input type="submit" value="提交" />
        </p>
    </form>
</body>
</html>

修改第二層demo目錄的setting.py文件,將模板文件路徑寫入:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],           # changed---------
        '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',
            ],
        },
    },
]

運行測試

然後你可以打開終端去第一層demo目錄下,運行項目了(如果上次的沒結束,按ctr+c結束):

python manage.py runserver 127.0.0.1:8000

打開 http://127.0.0.1:8000/ 鏈接就能看到簡單的註冊界面(login.html)。但是在點擊提交按鈕的時候出現錯誤,原因是CSRF驗證失敗。請求中止,您看到消息是因爲網站在提交表單時需要使用CSRF Coo​​kie。出於安全原因,此cookie是必需的,以確保瀏覽器不被第三方劫持。

我們修改第二層demo目錄的setting.py文件,再點擊提交就會再跳到登錄頁面,沒錯,由於我們只寫了一個頁面就暫時跳到原來頁面,後面再實現不同頁面的請求跳轉:

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

轉下一篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章