1.Django基礎(chǔ)

Django基礎(chǔ)

官網(wǎng):https://www.djangoproject.com/

  1. Django安裝

    pip install Django==2.2.12
    

  1. 創(chuàng)建Django項目

    • 命令行中創(chuàng)建項目

      # 切換到準(zhǔn)備存儲Django項目的路徑
      cd <Django項目的存儲路徑>
      # 創(chuàng)建項目
      django-admin startproject <項目名稱>
      
    • Pycharm中創(chuàng)建項目(推薦敞斋,只有專業(yè)版的Pycharm才支持WEB開發(fā))

      file -> New Project -> Django -> Project Interpreter:New Virtualenv environment ->勾選 Existing interpreter(已經(jīng)存在的解釋器)-> Interpreter選擇Python解釋器版本 -> 點(diǎn)擊Create -> open in new window
      

  1. Django項目的目錄結(jié)構(gòu)

    • Django項目名稱目錄

      • __init__.py:表示該文件夾可以被導(dǎo)入癣防。

      • settings.py:Django項目系統(tǒng)配置文件硝训。

        import os
        
        # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
        BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        
        
        # Quick-start development settings - unsuitable for production
        # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
        
        # SECURITY WARNING: keep the secret key used in production secret!
        SECRET_KEY = 'p#%=itzh^ope9)=rdjy%^yn@@$y_$1x91*3)xn((*#13o+(r8_'
        
        # SECURITY WARNING: don't run with debug turned on in production!
        DEBUG = True
        
        ALLOWED_HOSTS = []
        
        
        # Application definition
        # 新建APP之后媚送,一定要告訴Django新建了APP
        INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'app.apps.AppConfig',   # 將新建的APP添加進(jìn)來
        ]
        
        MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            # 'django.middleware.csrf.CsrfViewMiddleware',  # 學(xué)習(xí)Django階段先把這行注釋掉
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
        ]
        
        ROOT_URLCONF = 'Django.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 = 'Django.wsgi.application'
        
        
        # Database
        # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
        
        # 數(shù)據(jù)庫相關(guān)的配置
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            }
        }
        
        
        # Password validation
        # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
        
        AUTH_PASSWORD_VALIDATORS = [
            {
                'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
            },
            {
                'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
            },
            {
                'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
            },
            {
                'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
            },
        ]
        
        
        # Internationalization
        # https://docs.djangoproject.com/en/2.2/topics/i18n/
        
        LANGUAGE_CODE = 'en-us'
        
        TIME_ZONE = 'UTC'
        
        USE_I18N = True
        
        USE_L10N = True
        
        USE_TZ = True
        
        
        # Static files (CSS, JavaScript, Images)
        # https://docs.djangoproject.com/en/2.2/howto/static-files/
        
        # 靜態(tài)文件夾的別名
        STATIC_URL = '/static/'
        
        # 配置靜態(tài)文件路徑儒拂,所有靜態(tài)文件(css/js/圖片)都放在static文件夾中
        STATICFILES_DIRS = [
            os.path.join(BASE_DIR, "static")
        ]
        
        
      • urls.py:用來管理項目的url資源的文件(URL和函數(shù)的對應(yīng)關(guān)系)班挖,項目中用到的URL地址都需要我們?nèi)ヅ渲谩?/p>

        from django.contrib import admin
        from django.urls import path
        from app import views
        urlpatterns = [
            path('admin/', admin.site.urls),
            path('login/', views.login), # 將業(yè)務(wù)函數(shù)的對應(yīng)關(guān)系添加到這里
        ]
        
      • views.py:需要手動創(chuàng)建偿衰,

      • wsgi.py:Python服務(wù)器網(wǎng)關(guān)接口低匙,是Python應(yīng)用與Web服務(wù)器之間的接口一汽。

    • manage.py:是與項目進(jìn)行交互的命令行工具集的入口避消。

    • templates文件夾:存放HTML的文件夾(需要在settings.py中告訴Django去哪兒找這些HTML文件)

    • static文件夾:需要手動創(chuàng)建。用于存放bootstrap召夹、fontawesome岩喷、jquery、圖片等监憎。也需要在settings.py中告訴Django去哪兒找這些文件)

      # 靜態(tài)文件保存路徑的別名
      STATIC_URL = '/static/'
      
      # 所有的bootstrap纱意、fontawesome、jquery等靜態(tài)文件都放在static文件夾中
      STATICFILES_DIRS = [
          os.path.join(BASE_DIR, "static"),
          '/var/www/static/',
      ]
      
    • app文件夾:需要手動創(chuàng)建鲸阔。

      • migration文件夾
      • __init__.py:表示該文件夾可以被導(dǎo)入偷霉。
      • admin.py
      • apps.py:存放app相關(guān)的配置項。
      • models.py
      • tests.py:用于測試
      • views.py:主要存放頁面對應(yīng)關(guān)系的業(yè)務(wù)邏輯(所有定義的函數(shù)都必須要帶有request參數(shù)褐筛,request參數(shù)保存了所有和用戶瀏覽器請求相關(guān)的數(shù)據(jù))类少。

  1. 啟動Django項目

    • 命令行啟動

      # 進(jìn)入manage.py所在的文件夾
      cd <manage.py的路徑>
      # 啟動manage.py,如果不寫IP地址和端口渔扎,默認(rèn)從本機(jī)的8000端口啟動服務(wù)
      python3 manage.py runserver <IP地址>:<端口號>
      
    • 在Pycharm中啟動Django項目


  1. Django基礎(chǔ)必會三件套

    • HttpResponse:內(nèi)部傳入一個字符串參數(shù)硫狞,返回給瀏覽器。

      # 在views.py文件中晃痴,導(dǎo)入HttpResponse
      from django.shortcuts import HttpResponse
      
      def index(request):
          # 業(yè)務(wù)邏輯代碼
          return HttpResponse("OK")
      
    • render:除接收request參數(shù)外残吩,還可以接收一個待渲染的模板文件和一個保存具體數(shù)據(jù)的字典參數(shù)。

      將數(shù)據(jù)填充進(jìn)模板文件倘核,最后把結(jié)果返回給瀏覽器泣侮。

      def index(request):
          # 業(yè)務(wù)邏輯代碼
          return render(request, "index.html", {'error': error_msg})
      
    • redirect:接受一個URL參數(shù),表示跳轉(zhuǎn)到指定的URL(URL重定向)笤虫。

      def index(request):
          # 業(yè)務(wù)邏輯代碼
          return redirect("/home/")
      
  1. Django中的APP

    一個Django項目可以分為很多個APP旁瘫,用來隔離不同功能模塊的代碼。

    • 使用系統(tǒng)命令行創(chuàng)建APP

      # 進(jìn)入Django項目的根目錄
      cd <Django項目路徑>
      # 創(chuàng)建創(chuàng)建Django的APP
      python manage.py startapp <APP名稱>
      
    • 使用Pycharm創(chuàng)建APP

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載琼蚯,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者酬凳。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市遭庶,隨后出現(xiàn)的幾起案子宁仔,更是在濱河造成了極大的恐慌,老刑警劉巖峦睡,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翎苫,死亡現(xiàn)場離奇詭異权埠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)煎谍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門攘蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人呐粘,你說我怎么就攤上這事满俗。” “怎么了作岖?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵唆垃,是天一觀的道長。 經(jīng)常有香客問我痘儡,道長辕万,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任沉删,我火速辦了婚禮渐尿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矾瑰。我一直安慰自己涡戳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布脯倚。 她就那樣靜靜地躺著渔彰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪推正。 梳的紋絲不亂的頭發(fā)上恍涂,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音植榕,去河邊找鬼再沧。 笑死,一個胖子當(dāng)著我的面吹牛尊残,可吹牛的內(nèi)容都是我干的程拭。 我是一名探鬼主播绘梦,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼捶枢,長吁一口氣:“原來是場噩夢啊……” “哼啸澡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慰毅,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤隘截,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婶芭,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡东臀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了犀农。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惰赋。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖呵哨,靈堂內(nèi)的尸體忽然破棺而出谤逼,到底是詐尸還是另有隱情,我是刑警寧澤仇穗,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站戚绕,受9級特大地震影響纹坐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舞丛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一耘子、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧球切,春花似錦谷誓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸵钝,卻和暖如春糙臼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恩商。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工变逃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怠堪。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓揽乱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粟矿。 傳聞我的和親對象是個殘疾皇子凰棉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353