VSCode, Django, and Anaconda開發環境集成配置[Windows]

来源:https://www.cnblogs.com/chilliegg/archive/2019/11/26/11920751.html
-Advertisement-
Play Games

之前一直是在Ubuntu下進行Python和Django開發,最近換了電腦,把在Virtual Box 下跑的Ubuntu開發機挪過來總是頻繁崩潰,索性就嘗試把開發環境挪到Windows主力機了。 不得不說,巨硬家這幾年在多元並包方面真的是走在了世界前列。特別是VSCode,兩年前已經成為了我在Li ...


  之前一直是在Ubuntu下進行Python和Django開發,最近換了電腦,把在Virtual Box 下跑的Ubuntu開發機挪過來總是頻繁崩潰,索性就嘗試把開發環境挪到Windows主力機了。

不得不說,巨硬家這幾年在多元並包方面真的是走在了世界前列。特別是VSCode,兩年前已經成為了我在Linux下的主力IDE。於是直接Google到了這篇爽文:Django Tutorial in Visual Studio Code, 下麵會結合Anaconda的開發環境,翻譯這篇官方指導。

 

0x1 - 安裝清單

- Win10

- Anaconda3

- Vistual Studio Code(VSCode)

 分別下載並安裝好以上三個神器,選的都是最新穩定版。

 

0x2 - Anaconda 管理並配置Python開發環境

  • 打開Anaconda Prompt終端命令行工具(不是Anaconda Navigator),先來練習下conda,類似於pip和virtualenv的結合體。

  • 用conda創建Python開發虛擬環境,註意要在環境名稱(這裡是my_env)後加上python版本。
conda create -n wechat_env python=3.7
  • 移除環境

 conda remove -n wechat_env --all

  • 查看虛擬環境列表, *代表當前工作所在的虛擬環境:
(base) C:\Users\freman.zhang>conda env list
# conda environments:
#
base                  *  C:\Anaconda3
wechat_env               C:\Anaconda3\envs\wechat_env
  •  激活及切換環境:
(base) C:\Users\freman.zhang>conda activate wechat_env
(wechat_env) C:\Users\freman.zhang>conda env list
# conda environments:
#
base                     C:\Anaconda3
wechat_env            *  C:\Anaconda3\envs\wechat_env
(wechat_env) C:\Users\freman.zhang>conda deactivate
(base) C:\Users\freman.zhang>
  • 安裝Django到開發環境,如有需要可以指定版本號。
conda install django
conda install django==2.2.5

 

 

這樣conda就會自動下載並安裝好Python和Django到指定的開發環境,無需再事先或單獨安裝在OS中。

conda詳細的管理命令可以到官方文檔中詳細瞭解。

 

0x3 - 在VSCode中配置集成開發環境

 Django是一個為安全,快速和可擴展的web開發所設計的高級Python框架。Django對於URL路由, 頁面模板和數據處理等提供豐富的支持。

在接下來的tutorial中,我們將創建一個簡單的三頁應用,並將會用到一個通用的基礎模板。通過在VSCode中完整的過一遍這個開發過程,我們將可以更好的理解如何使用VSCode的命令終端,編輯器和調試器等來高效便捷地進行Django應用開發。

整個示例項目的完整代碼在Github: python-sample-vscode-django-tutorial.

1. 準備條件

- 在VScode中安裝python插件

- 下載安裝python,在Windows中還需特別註意PATH環境變數的配置

我們的安裝包和開發環境在前面已經都通過conda完成,對比後就可非常明顯的體現出Anaconda在包管理方面的便捷性。

2. 集成虛擬開發環境到VSCode中

  • 在VSCode中按組合鍵ctrl+shift+P,輸入python,先擇Python: Select Interpreter, 這個命令將會展示出一個所有VSCode可用的python解釋器清單。

 

  • 從這個清單中選擇我們上面用conda新建的開發環境 -- 以 ./env or .\env開頭

 

 

  •  按組合鍵Ctrl+Shift+`打開一個新的集成命令終端,在VSCode的地步狀態欄,可以看到當前開發環境的標識

 

 

 0x4 - VSCode中創建Django項目

1. 按組合鍵Ctrl+Shift+`進入開發終端,相關解釋器和虛擬開發環境將會自動被激活。然後執行如下命令,如果沒有任何報錯,用瀏覽器打開http://127.0.0.1:8000,我們將會看到Django的預設歡迎頁。

django-admin startproject web_project C:\web_project
cd C:\web_project
python manage.py startapp hello
python manage.py runserver

 

 

 2. 接下來是Django應用的基礎構建

  • hello/views.py
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")
  •  hello/urls.py
from django.urls import path
from hello import views

urlpatterns = [
    path("", views.home, name="home"),
]

 

  • web_project/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("", include("hello.urls")),
]

 

 

 

3. 保存所有文件,然後啟動服務 python manage.py runserver,用瀏覽器訪問應用網址 http://127.0.0.1:8000,將會看到如下:

 

 

 0x5 - VSCode中創建Django debugger launch profile開啟自動調試

到這裡你可能已經在想,是否有更好的方式來調試和運行應用服務,而非每次執行一次python manage.py runserver 呢?必須有的!

VSCode的debugger是支持Django的,我們通過自定義 launch profile就可以實現這一點。

1. 切換左邊的活動欄到Debug, 在Debug視圖的頂部,我們可以看到如下。No Configuratins表示Debugger還未配置任何運行設定(launch.json)。

 

 

 2. 點擊齒輪創建並開啟一個launch.json文件,這個文件裡面已經包含了一些調試設定,每種都是以獨立的JSON對象存在。我們添加如下:

 

{
    "name": "Python: Django",
    "type": "python",
    "request": "launch",
    "program": "${workspaceFolder}/manage.py",
    "console": "integratedTerminal",
    "args": [
        "runserver",
        "--noreload"
    ],
    "django": true
},

 

其中"django": true告訴VSCode開啟Django頁面模板調試功能。

3. 點擊Debug > Start Debugging按鈕,瀏覽器中打開URL http://127.0.0.1:8000/將可以看到我們的APP順利的跑起來了。

 其實任何時候感覺想要調試一下應用效果時,我們都可以用Debug來啟動服務,此外這個操作還會自動保存所有打開著的文件。

這樣就不用每次都到命令行敲一遍啟動命令,倍爽有木有!!!

4. Debug不僅僅只有啟動和保存功能,我們下麵通過具體案例來體驗下高級用法。

  先碼代碼

  • hello/urls.py:添加訪問路由到urlpatterns list中
path("hello/<name>", views.hello_there, name="hello_there"),

 

  • hello/views.py
import re
from datetime import datetime
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")

def hello_there(request, name):
    now = datetime.now()
    formatted_now = now.strftime("%A, %d %B, %Y at %X")

    # Filter the name argument to letters only using regular expressions. URL arguments
    # can contain arbitrary text, so we restrict to safe characters only.
    match_object = re.match("[a-zA-Z]+", name)

    if match_object:
        clean_name = match_object.group(0)
    else:
        clean_name = "Friend"

    content = "Hello there, " + clean_name + "! It's " + formatted_now
    return HttpResponse(content)

5. 在Debug中設定斷點(breakpoints)於now = datetime.now() 所在行。

 

 

 6. 按F5或Debug > Start Debugging 開啟調試,VSCode頂部將會出現一個如下的Debug工具欄。

Pause (or Continue, F5), Step Over (F10), Step Into (F11), Step Out (Shift+F11), Restart (Ctrl+Shift+F5), and Stop (Shift+F5). See VS Code debugging for a description of each command.

 

 

 7. 在下麵的終端中也會出現相關的控制信息。通過瀏覽器打開URL http://127.0.0.1:8000/hello/VSCode, 在頁面渲染完成前,VSCode會暫停在設定的斷點處。黃色小箭頭代表其是即將執行到的下一行。

 

 

 點擊 Step Over(F10) 執行 now = datetime.now()所在行。

在左邊Debug菜單欄我們將會看到很多實時輸入信息,包含運行時的變數值等等。我們可以在這裡檢查各個賦值或相關信息是否符合設計目標。

 

 

 程式暫停在斷點位置時,我們可以回到代碼中更改相關語句,調試器中的相關輸入信息也會實時做狀態更新。我們可以嘗試將formatted_now的賦值做如下更改,用來直觀地比較查看下調試器狀態更新。

now.strftime("%a, %d %B, %Y at %X")
'Fri, 07 September, 2018 at 07:46:32'
now.strftime("%a, %d %b, %Y at %X")
'Fri, 07 Sep, 2018 at 07:46:32'
now.strftime("%a, %d %b, %y at %X")
'Fri, 07 Sep, 18 at 07:46:32'

 

 

我們可以按F5逐行執行接下來的語句,並觀察調試器輸出信息,直到最終應用頁面完全渲染完成,點選Debug > Stop Debugging 或 command (Shift+F5)關閉調試。

 

  0x5 - Go to Definition

VSCode也支持查看函數和類的定義查看:

  • Go to Definition jumps from your code into the code that defines an object. For example, in views.py, right-click on HttpResponse in the home function and select Go to Definition (or use F12), which navigates to the class definition in the Django library.

  • Peek Definition (Alt+F12, also on the right-click context menu), is similar, but displays the class definition directly in the editor (making space in the editor window to avoid obscuring any code). Press Escape to close the Peek window or use the x in the upper right corner.

 

 

 

0x6 - Template, Static, Models編程

接下來可以在模板,靜態文件和數據處理的功能編程實現上實踐上面介紹的這些功能,練習整個集成開發環境的操作熟練度。

其實如果有一定基礎的話,我相信一天你就將會從入門到精通。

詳細的代碼個實現步驟在這裡就不在繼續往下貼了。詳細教程大家可按這個鏈接中的內容參照實現。

https://code.visualstudio.com/docs/python/tutorial-django#_create-multiple-templates-that-extend-a-base-template

 

0x7 - 問題分享

整個過程中只有遇到的問題:

1. VSCode無法原生支持Django Models相關對象的關聯檢查。

我們需要額外做點工作:

  • ctrl+shift+`(ESC下麵那個鍵)打開命令終端,不用手工敲任何命令,終端會自動切換和激活到對應的虛擬開發環境。

安裝pylint-django

 

  •  然後進入VSCode setting裡面設定pylint參數,具體如下:

 

就這樣,問題解決!

 

 

==========================================================

由於還有繁重的日常工作要忙,這篇文章歷時了幾天時間斷斷續續整理出來,也精簡了不少官方指導中的文字描述。可能會對各位閱讀和操作來帶一些困擾,所以還是建議各位直接去讀官方文檔。我們這裡主要是集中整理了下Anaconda和VSCode的集成開發環境配置,以備未來不時之需,若能順便幫到任何人,將倍感欣慰。各位若有任何問題,歡迎提出,我將會彙整日後自己或其他來源收集到的問題陸續補充到0x7。

 

最後,希望大家能多多動手

多多敲代碼

多多點贊

多多分享

 

回家遛女兒去咯

Over~~

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前有人詢問 self 關鍵字的用法,答案是比較明顯的:靜態成員函數內不能用 this 調用非成員函數,但可以用 self 調用靜態成員函數/變數/常量;其他成員函數可以用 self 調用靜態成員函數以及非靜態成員函數。隨著討論的深入,發現 self 並沒有那麼簡單。鑒於此,本文先對幾個關鍵字做對比 ...
  • 1.什麼是redis? Redis 是一個基於記憶體的高性能key-value資料庫。 2.Reids的特點 Redis本質上是一個Key-Value類型的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫數據flush到硬碟上進行保存。因為是純記憶體操作 ...
  • [TOC] 模板語法 兩種書寫格式: 變數相關 {{ }} 邏輯相關 {% %} 模板傳值 給html頁面傳值的兩種方式 第一種方式 弊端就是:當要傳的變數名很多的時候,就很麻煩 第二種 locals() locals() 會將當前所在的名稱空間中所有的名字全部傳遞給html頁面 傳值 基本數據類型 ...
  • JavaWeb——下載並安裝Tomcat伺服器 摘要:本文主要學習如何下載並安裝Tomcat伺服器。 背景知識 什麼是JavaWeb JavaWeb,是用Java技術來解決相關Web互聯網領域的技術的總稱。Web包括:Web伺服器和Web客戶端兩部分。 Java在最早Web客戶端的應用有Java A ...
  • 現在是北京時間2019年11月28日,大學畢業已經工作四個多月。說來也是奇怪,大學裡面明明主修機械電子工程,幾乎是純機械方向,畢業之後的工作卻與主修的課程毫無關係。因為對機械這一行業毫無興趣,大學裡面花了點時間學了學C,做過一些項目。畢業設計又拿python寫了個爬蟲並且為它做了一個界面(當時整個機 ...
  • 場景 效果 cutecharts的Github: https://github.com/chenjiandongx/cutecharts 註: 博客: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載 ...
  • 一、Tensor 1.1 什麼是Tensor?Tensor的數據類型 Tensor是張量的意思,在TensorFlow中張量可以是標量(scalar)、向量(vector)、矩陣(matrix)、高維度張量(rank>2),像Numpy里的數組就不屬於Tensor。TensorFlow里的常用的數據 ...
  • 慢查詢 一、概念 MySQL的慢查詢,全名是慢查詢日誌,是MySQL提供的一種日誌記錄,用來記錄在MySQL中響應時間超過閥值的語句。 具體環境中,運行時間超過long_query_time值的SQL語句,則會被記錄到慢查詢日誌中。 long_query_time的預設值為10,意思是記錄運行10秒 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...