天天看點

Django建立第一個項目Django

Django

Django是重量級的 web應用架構,用Python語言開發

​ Python和Django 是快速開發、設計、部署網站的最佳組合

MVC模型:

​ model–模型 編寫程式應有的功能,負責業務對象與資料庫的映射

​ view–視圖 圖形界面,負責與使用者的互動

​ controller–控制器 負責轉發請求,對請求進行處理

MTV模型:

​ model–模型 編寫程式應有的功能,負責業務對象與資料庫的映射

​ template-模闆 負責把頁面html展示給使用者

​ view-視圖 負責業務邏輯,并在合适的時候調用module和template

還需要一個URL分發器,将一個一個URL的頁面請求分發給不同的view處理,view再調用相應的model和template

使用者通過浏覽器發起一個request請求,請求會去通路視圖,視圖去子產品裡取資料資料庫是與子產品互動的,傳回給視圖,視圖把要展示的資料傳回給模闆,模闆就是頁面

Django安裝

菜鳥教程https://www.runoob.com/django/django-install.html

檢查Django是否安裝成功,指令行進入Python

xxxx$python
>>import django
>>django.get_version()
           

Django的指令行:

建立一個項目-HelloWorld

Django-admin.py startproject HelloWorld
           

Pycharm建立一個Django項目,然後增加自己的自建應用(application), python manage.py startapp 應用名,目錄為:

Django建立第一個項目Django

項目目錄

​ manage.py 一個實用的指令執行工具,讓你以各種方式與Django項目進行互動

HelloWorld 下會有一個同名的子目錄,子目錄HelloWorld下:

​ settings --Django的項目配置

​ urls --Django項目的URL聲明,一份由Django驅動的網站目錄

​ wsgi --一個WSGI相容的web伺服器入口,以便運作你的項目

啟動伺服器

python manage.py runserver

python manage.py runserver 0.0.0.0:8000
           

0.0.0.0 讓其它電腦可連接配接到開發伺服器,8000 為端口号。如果不說明,那麼端口号預設為 8000。

在浏覽器輸入你伺服器的 ip(這裡我們輸入本機 IP 位址: 127.0.0.1:8000) 及端口号

視圖和URL配置

有自建應用,必須先把自建應用的名字加到settings的install_APP裡面–pycharm建立的會自動加

修改settings
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user',  #自建的
    'test_tools', #自建的
    'case' #自建的 
]

#下面修改一些普通配置
LANGUAGE_CODE = 'zh-Hans' #修改中文編碼

TIME_ZONE = 'Asia/Shanghai' #修改時區

USE_I18N = True

USE_L10N = True

USE_TZ = False  #這裡也改一下,要不然資料庫用的還是标準時區
           
在自建應用zyy的view裡配置,配置自己的view
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def user_info(request):
    s = '你好'
    return HttpResponse(s)  #傳回的是字元串的用它

def welcome(request):
    username = '易烊千玺'
    return render(request,'welcome.html',{'username':username})
    #render就是傳回一個網頁
    #因為在settings裡面配置了dir 是以能找到這個路徑-welcome.html

def index(request):
    return render(request,'index.html')
           

其中,templates下面的 DIR,是指的是Django尋找HTML的路徑

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [BASE_DIR , '/templates'], #Django自動生成,不好使
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        #指的是Django尋找html模闆的目錄
    },
]
           
接着綁定URL與視圖函數。打開urls.py
from django.contrib import admin
from django.urls import path
from zyy import views  #導入自己的view

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello_world/', views.hello_world), #添加view,前面的hello_world是連結拼接的路徑,這個頁面應為--http://127.0.0.1:8000/hello_world
    path('', views.index),  #通路路徑不寫,代表通路的根目錄就是它
]
           
path函數

Django path() 可以接收四個參數,分别為2個必選參數,兩個可選參數

  • route: 字元串,表示 URL 規則,與之比對的 URL 會執行對應的第二個參數 view。
  • view: 用于執行與正規表達式比對的 URL 請求。
  • kwargs: 視圖使用的字典類型的參數。
  • name: 用來反向擷取 URL。

Static

static 是在Django 具體APP下建立的static目錄,用來存放靜态資源

在settings裡面設定靜态資源路徑!!注意是一個元祖,要加,

STATIC_URL = '/static/' #原有的

#自己設定的
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)
           
運作Django伺服器報錯 -TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析與解決

​ 錯誤類型: TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’

​ 出錯代碼: 如上圖綠框所示,在settings.py中的’DIRS’: [BASE_DIR / ‘templates’]

錯誤分析: 這個提示大概是說:“類型錯誤:不支援操作類型為字元串和字元串”,直接把兩個字元串(BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))在前面定以為基礎路徑,也就是整個項目的路徑)在清單中連接配接起來是不合适的,這裡系統将“/”了解為了除号,系統了解為“字元串/字元串”。實際上這裡想表達的意思将BASE_DIR 和’templates’連在一起形成一個完整路徑,而“/”是路徑分隔符。

修改方法: ‘DIRS’: [str.format(BASE_DIR, ‘/templates’)],再次運作就成功了。

實際上,我所使用的是:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 指的是Django尋找html模闆的目錄

這個bug的 原文連結:https://blog.csdn.net/u010021014/article/details/110449782