Django下載和使用 三板斧httpresponse render redirect

簡介

是一個爲完美主義者設計的web框架html

The web framework for perfectionists with deadlines.python

Django可使你可以用更少的代碼,更加輕鬆且快速去開發web應用。web

Django makes it easier to build better Web apps more quickly and with less code.面試

下面這段太長了,有請百度翻譯:sql

​ Django是一個高級python web框架,它鼓勵快速開發和乾淨、實用的設計。由經驗豐富的開發人員構建,解決了許多web開發的麻煩,所以你能夠專一於編寫你的應用程序,而無需從新造輪子。它是免費且開源的。數據庫

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.django

說人話:flask

  • 大而全,自帶的功能特別特別多,就相似於航空母艦
  • 缺點:有時過於笨重(小項目有不少自帶功能用不到)

 

參考:http://www.javashuo.com/article/p-qlmpimbx-do.htmlapi

1、使用 Django 的注意事項

  • 計算機名不能是中文瀏覽器

  • 文件的命名儘可能也不要用中文

    ​ 若是是中文可能會引發 encoding 編碼報錯

  • 一個pycharm窗口只能有一個項目,不要把多個項目項目放在一個窗口下

  • 注意 django 的版本問題...(下面有展開說明)

  • 起了一個django項目後,必定要注意端口

    ​ 想起多個django項目,要記得更換端口(防止端口衝突)

  • 安裝 Django 其餘版本 會自動卸載已有版本再從新安裝,因此每一個項目用的哪一個版本的 Django,最好備註一下

# 計算機名不能有中文

 

 

# Django版本問題

不一樣版本的django固然有所不一樣,爲了防止出現意外bug,最好使用同一版本(行業潛規則:不要嘗試最新版本)

 

下文以 1.11.11 版本展開,版本不一樣可能會有不一樣的問題

2、Django下載安裝

下載安裝仍是須要一點點時間的,能夠考慮使用國內的 pip源

下面的安裝方式選一個便可

第一種:在命令行下載安裝

pip3 install django==1.11.11(1.11.11是版本號)

第二種:在pycharm圖形界面下載安裝

必定要記得選你須要的版本

檢驗是否安裝成功

在命令行敲入以下命令便可(在安裝 django時就已經自動給咱們配置過環境變量了,因此這裏能夠直接在命令行敲)

django-admin

返回相似下面的一堆信息就是安裝成功了

3、建立Django項目與應用

3.1 命令行下建立與啓動

3.11 命令行建立 Django 項目(project)

django-admin startproject project_name(項目名)

3.12 命令行建立 Django 應用(app)

先切換到項目要存放的目錄再創,一個應用(app)對應一起獨立的功能

命令:

django-admin startapp app01(應用名) 或 python manage.py startapp app01(應用名)

 

3.13 命令行啓動 Django 項目

要切到項目根目錄下(否則找不到這個 manage.py 文件)

python manage.py runserver

#注意

用命令行建立 django 項目不會自動新建 templates 模板文件夾,須要你本身手動建立,而且須要你本身去 settings.py 文件中註冊該文件路徑

3.2 pycharm下建立與啓動

創項目時能夠創一個應用(app),後續經過命令行建立其餘的

3.21 後續添加app

#命令行(要掌握,可能面試會讓手寫 ****)

python manage.py startapp app02

3.22 註冊應用(app)

建立的應用(app)必定要在 settings 裏 註冊(添加記錄)才能生效(前面那些 django開頭的是 django 項目自帶的 app)

pycharm建立項目時的那個app會自動配進來

命令行裏建立的應用(app)都須要來這裏配置上去 (*****)

3.23 啓動項目

點綠色箭頭便可啓動項目

3.24 若是沒有那個圖標

3.25 項目沒法啓動

若是命令行啓動項目沒問題,而 pycharm 啓動啓動不了請注意 python 解釋器是否選對,我有朋友就是選成了 pythonw,致使 django 項目在 pycharm 裏面跑不起來

必定要把錯誤的給刪掉,不然下一次仍是默認使用第一個的

 

 

 

4、Django項目目錄介紹

+項目根目錄
    +應用文件夾(app01)
        +migrations 文件夾     數據庫遷移記錄
        -admin.py   django後臺管理
        -apps.py    應用註冊相關
        -models.py  orm表模型類
        -tests.py   測試文件
        -views.py   視圖函數/+與項目名同名的文件夾
        -settings.py    django暴露給用戶可配置的文件
        -urls.py        路由文件,配置路由與視圖函數對應關係
        -wsgi.py        
    +templates      頁面模板文件夾,通常放待渲染數據的html頁面
        -test.html  待渲染數據的頁面(使用django自帶的模板語法去渲染)
    -mange.py       django的入口文件

配置文件 settings.py 解析

這裏只截取了部分代碼做介紹

# ...其餘代碼...
# Application definition
# 新建立的應用(app)必定要來這裏添加(註冊)纔有效
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 'app01.apps.App01Config',  # pycharm建立項目時會自動把那個app在這裏註冊了
    'app01',  # 註冊 命令行建立的app01,加到這裏來 完整寫法: 'app01.apps.App01Config',
    'app02',  # 註冊 命令行建立的app02,加到這裏來 完整寫法: 'app02.apps.App01Config',
]

# django中間件  django的門戶 保安
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'myfirstdjangodemo.urls'


# 模板文件配置相關
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        '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',
            ],
        },
    },
]

WSGI_APPLICATION = 'myfirstdjangodemo.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

# 數據庫相關
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
# ...其餘代碼...

5、Django小白必會三板斧

前提:這一塊開始默認 django 項目的已經建立好了
三板斧:
    HttpResponse:   用來返回字符串給頁面
    render:         返回html頁面而且可以給該頁面傳值
    redirect:       重定向,返回指定的頁面html(瀏覽器能夠看到302狀態碼)
強調:每新添加一個功能都應該在路由文件 urls.py中添加一個路由與視圖的對應關係(請求路徑的時候纔有對應的 視圖函數/類 去處理)

最簡單的步驟:

先建立app
配置路由(路由與視圖函數的對應關係)
寫視圖函數(要用到 HttpResponse, redirect,記得本身導過來)
編寫模板頁面

1. HttpResponse 舉例

添加路由

first_django_project/urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views  # 導入視圖函數文件

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),  # 新添加的路由, index 瀏覽器端口後面的地址 --> 127.0.0.1地址:8000端口/index, views.index 輸入前面地址時將要執行的函數
]

編寫對應的視圖函數

app01/views.py

from django.shortcuts import render, HttpResponse, redirect
# 引入 HttpResponse(直接返回字符串並打包成響應體返回) 和 redirect(重定向頁面)


# Create your views here.
# index 路由對應的視圖函數,這裏用 HttpResponse 返回一個字符串
def index(request):
    return HttpResponse('<h1>Hello, this is Index!</h1>')  # 能夠返回html標籤,瀏覽器依舊會渲染效果

在瀏覽器中請求數據

127.0.0.1:8000/index/

2. render 舉例(可傳數據模板渲染)

添加路由

first_django_project/urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views  # 導入視圖函數文件

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^login/', views.login),  # 新添加的 登陸路由 與 對應的視圖函數
]

配置視圖函數

新建頁面

templates/login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>這是登陸頁面</h1>
    {# django的模板語法(支持字典 點語法取值 dic.key,但不支持字典的原生語法,這一點不如jinja2(模板引擎語法,通常和flask框架搭配使用) 強大!) #}
    <h3>{{ user_dict.username }}</h3>
</body>
</html>

添加視圖函數

app01/views.py

from django.shortcuts import render, HttpResponse, redirect
# 引入 HttpResponse(直接返回字符串並打包成響應體返回) 和 redirect(重定向頁面)


# Create your views here.
def index(request):
    return HttpResponse('<h1>Hello, this is Index!</h1>')


# login 路由對應的視圖函數,這裏用 render 返回 html 格式的頁面字符串
def login(request):
    user_dict = {  # 模擬後臺處理好的數據
        "username": "jason"
    }
    # login.html 這裏不須要加上templates 文件夾,已經作過配置了,會自動找到的
    # return render(request, 'login.html')  # 可什麼數據都不帶
    # {"user_dict": user_dict} 包裝成響應體返回, 鍵"user_dict"在模板中能夠拿到
    return render(request, 'login.html', {"user_dict": user_dict})

在瀏覽器中請求數據

3. redirect 案例

老規矩:添加路由

first_django_project/urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views  # 導入視圖函數文件

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^login/', views.login),
    url(r'^home/', views.home),  # 新添加的 home 路由 與 對應的視圖函數(這裏是演示重定向,直接跳轉到 login路由去處理)
]
配置視圖

配置視圖函數

from django.shortcuts import render, HttpResponse, redirect
# 引入 HttpResponse(直接返回字符串並打包成響應體返回) 和 redirect(重定向頁面)


# Create your views here.
def index(request):
    return HttpResponse('<h1>Hello, this is Index!</h1>')


def login(request):
    user_dict = {
        "username": "jason"
    }
    return render(request, 'login.html', {"user_dict": user_dict})


def home(request):  # home 路由對應的視圖函數
    print("----> 請求home 路徑,進入到了 home的路由函數...")
    return redirect('/login/')

在瀏覽器中請求數據

剛在後臺打印了一句話,看看有沒有

相關文章
相關標籤/搜索