Django基本知識

1、安裝及使用

  • 下載安裝css

    • 命令行:pip3 install django==1.11.21html

    • pycharmpython

  • 建立項目mysql

    • 命令行:sql

      • 找一個文件夾存放項目文件,打開終端:數據庫

      • django-admin startproject 項目名稱django

      • 項目目錄app

    • pycahrmide

  • 啓動函數

    • 命令行

      • 切換到項目的根目錄下 manage.py

      • python36 manage.py runserver —— 127.0.0.1:80`

      • python36 manage.py runserver 80——127.0.0.1:80

      • python36 manage.py runserver 0.0.0.0:80——0.0.0.0:80

    • pycharm:點綠三角啓動 可配置

  • 簡單使用

    • 示例:返回HTML指定文件

    # 在urls.py中
    # 導入
    from django.shortcuts import HttpResponse,render
    ​
    # 函數
    def index(request):
        # return HttpResponse('index')
        return render(request,'index.html')
    ​
    # url和函數對應關係
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', index),
    ] 

2、靜態文件

  • 配置

    • 在settings.py中設置

    STATIC_URL = '/static/'          # 別名
    STATICFILES_DIRS = [            # 設置文件路徑,能夠設置多個
        os.path.join(BASE_DIR, 'static1'),
        os.path.join(BASE_DIR, 'static'),
        os.path.join(BASE_DIR, 'static2'),
    ]  
  • 使用

    • 在路徑前添加別名:/static/

    • 多個文件路徑,也是使用同一個別名,不是文件名

    • 若是別名後的路徑名相同,按照STATICFILES_DIRS列表的順序進行查找

    <link rel="stylesheet" href="/static/css/login.css">         {# 別名開頭 #} 

3、簡單的登陸實例

  • form表單提交數據注意的問題:

    • 提交的地址:action="",請求的方式:method="post"

    • 全部的input框有name屬性,如name="username"

    • 有一個input框的type="submit"或者有一個button

  • 提交post請求,因爲Django中有一個csrf校驗,全部請求會出問題

    • 解決方式:把settings中MIDDLEWARE的'django.middleware.csrf.CsrfViewMiddleware'註釋掉

  • 重定向

    • 導入:from django.shortcuts import redirect

    • 使用方式

    # 在函數中使用,例如
    return redirect('/index/')      # 參數:路徑url
    # 注意:前面必須加/,表明從url根拼接,不然就會在當前url後面一直拼接
    from django.shortcuts import HttpResponse, render, redirect
    ​
    def index(request):
        # return HttpResponse('index')
        return render(request, 'index.html')
    ​
    def login(request):
        if request.method == 'POST':
            # 獲取form表單提交的書籍
            username = request.POST['username']
            password = request.POST['password']
            # 驗證用戶名和密碼
            if models.User.objects.filter(username=username,password=password):
                # 驗證成功跳轉到index頁面
                # return redirect('https://www.baidu.com/')
                return redirect('/index/')
            # 不成功 從新登陸
        return render(request, 'login.html')
    ​
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^login/', views.login),
    ]
    示例

4、app

  • 建立app

    • 命令行:python manage.py startapp app名稱

    • pycharm:tools --> run manage.py task --> 輸入命令:startapp app名稱

  • 註冊app

    • 在settings.py中設置,例:app名爲app01

    INSTALLED_APPS = [
        ...
        'app01',
        'app01.apps.App01Config',       # 推薦寫法
  • app中的文件

    • migrations:存放遷移文件的

    • admin.py:Django提供的後臺管理工具

    • app.py:與app信息相關的

    • models.py:跟ORM有關的內容

    • views.py:視圖,寫函數的

5、使用MySQL流程

  • 建立一個MySQL數據庫:create database day53;

  • 在settings.py中設置,Django鏈接MySQL數據庫:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',      # 引擎 
            'NAME': 'day53',                         # 數據庫名稱
            'HOST': '127.0.0.1',                     # ip地址
            'PORT':3306,                            # 端口
            'USER':'root',                          # 用戶
            'PASSWORD':'123'                        # 密碼
        }
    }
  • 在與settings,py同級目錄下的init文件中寫入:

    import pymysql
    pymysql.install_as_MySQLdb()
  • 建立表(在app下的models.py中寫類):

    from django.db import models
    ​
    class User(models.Model):
        username = models.CharField(max_length=32)       # username varchar(32)
        password = models.CharField(max_length=32)       # username varchar(32)
  • 執行數據庫遷移的命令:

    • python manage.py makemigrations:檢測每一個註冊app下的model.py,記錄model的變動記錄

    • python manage.py migrate:同步變動記錄到數據庫中

6、MVC和MTV

  • MVC

    • M: model 模型 —— 和數據庫打交道

    • V:view 視圖 —— HTML

    • C: controller 控制器 —— 調度 傳遞指令 業務邏輯

  • MTV:

    • M: model 模型 ORM —— 和數據庫打交道

    • T: tempalte 模板 —— HTML

    • V:view 視圖 —— 函數 業務邏輯

  • djando是MTV模式

相關文章
相關標籤/搜索