Django(二)

MVC和MTV框架html

MVC

  Web服務器開發領域裏著名的MVC模式,所謂MVC就是把Web應用分爲模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件式的、鬆耦合的方式鏈接在一塊兒,模型負責業務對象與數據庫的映射(ORM),視圖負責與用戶的交互(頁面),控制器接受用戶的輸入調用模型和視圖完成用戶的請求,其示意圖以下所示:python

    M:model.py  就是和數據庫打交道用的,建立表等操做web

    V:View  視圖(視圖函數,html文件)shell

    C:controller  控制器(其實就是我百度雲代碼裏面那個urls文件裏面的內容,url(路徑)分發與視圖函數的邏輯處理)數據庫

 

MTV

  Django的MTV模式本質上和MVC是同樣的,也是爲了各組件間保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別是值:django

  • M 表明模型(Model): 負責業務對象和數據庫的關係映射(ORM)。
  • T 表明模板 (Template):負責如何把頁面展現給用戶(html)。
  • V 表明視圖(View):   負責業務邏輯,並在適當時候調用Model和Template。

  除了以上三層以外,還須要一個URL分發器,它的做用是將一個個URL的頁面請求分發給不一樣的View處理,View再調用相應的Model和Template,MTV的響應模式以下所示:小程序

 

  通常是用戶經過瀏覽器向咱們的服務器發起一個請求(request),這個請求回去訪問視圖函數,(若是不涉及到數據調用,那麼這個時候視圖函數返回一個模板也就是一個網頁給用戶),視圖函數調用模型,模型去數據庫查找數據,而後逐級返回,視圖函數把返回的數據填充到模板中空格中,最後返回網頁給用戶。瀏覽器

Django下載安裝

  Django官網下載頁面服務器

下載Django:

在cmd命令提示符或者pycharm中terminal中輸入:微信

pip3 install django==1.11.9

建立一個django project:

在cmd命令提示符輸入:

django-admin startproject mydjango  建立了一個名爲"mydjango "的Django 項目:

當前目錄下會生成mydjango的工程,目錄結構以下:(你們注意昂,pip下載下來的django你就理解成一個模塊,而不是django項目,這個模塊能夠幫咱們建立django項目)

 

  • manage.py ----- Django項目裏面的工具,經過它能夠調用django shell和數據庫,啓動關閉項目與項目交互等,無論你將框架分了幾個文件,必然有一個啓動文件,其實他們自己就是一個文件。
  • settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其餘一些工做的變量。
  • urls.py ----- 負責把URL模式映射到應用程序。
  • wsgi.py ---- runserver命令就使用wsgiref模塊作簡單的web server,後面會看到renserver命令,全部與socket相關的內容都在這個文件裏面了,目前不須要關注它。
 python manage.py runserver 127.0.0.1:8001  #此時已經能夠啓動django項目了,只不過什麼邏輯也沒有

 

   你會發現,上面沒有什麼view視圖函數的文件啊,這裏咱們說一個應用與項目的關係,上面咱們只是建立了一個項目,並無建立應用,以微信來舉例,微信是否是一個大的項目,可是微信裏面是否是有不少個應用,支付應用、聊天應用、朋友圈、小程序等這些在必定程度上都是相互獨立的應用,也就是說一個大的項目裏面能夠有多個應用,也就是說項目是包含應用的,它沒有將view放到這個項目目錄裏面是由於它以爲,一個項目裏面能夠有多個應用,而每一個應用都有本身這個應用的邏輯內容,因此他以爲這個view應該放到應用裏面,好比說咱們的微信,剛纔說了幾個應用,這幾個應用的邏輯能放到一塊兒嗎,放到一塊兒是否是就亂套啦,也很差管理和維護,因此這些應用的邏輯都分開來放,它就幫咱們提煉出來了,提煉出來一個叫作應用的東西,因此咱們須要來建立這個應用。

在mysite目錄下建立應用:

python manage.py startapp app01   #經過執行manage.py文件來建立應用,執行這句話必定要注意,你應該在這個manage.py的文件所在目錄下執行這句話,由於其餘目錄裏面沒有這個文件
python manage.py startapp app02  #每一個應用都有本身的目錄,每一個應用的目錄下都有本身的views.py視圖函數和models.py數據庫操做相關的文件

    models.py :以前咱們寫的那個名爲model的文件就是建立表用的,這個文件就是存放與該app(應用)相關的表結構的

    views.py    :存放與該app相關的視圖函數的

啓動django項目

python manage.py runserver 8001   # python manage.py runserver 127.0.0.1:8001,本機就不用寫ip地址了 若是連端口都沒寫,默認是本機的8000端口

 

 

 用pycharm來建立django項目:

 

基於Django實現一個簡單的示例

 

 

 

 

修改login.html文件內容:

 

 示例:用戶登錄,登錄成功跳轉index.html 頁面,失敗顯示文字:

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'^login/', views.login),
]

views.py:

from django.shortcuts import render,HttpResponse

# Create your views here.

def login(request):

    if request.method =='GET':
        return render(request,'login.html',{'username':'alex'})
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')
        if username == 'xu' and password == '123':
            return render(request,'index.html')
        else:
            return HttpResponse('登錄失敗!')

 

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>當前用戶是{{ username }}</h1>

<form action="/login/" method="post">

    用戶名: <input type="text" name="username">
    密碼: <input type="password" name="password">
    <input type="submit">

</form>

</body>
</html>

 

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>登錄成功!</h1>

</body>
</html>

 

注意:須要將settings中

'django.middleware.csrf.CsrfViewMiddleware',

 註釋掉

相關文章
相關標籤/搜索